@serenity-js/protractor 3.5.0 → 3.6.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 (27) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/lib/screenplay/abilities/BrowseTheWebWithProtractor.d.ts +0 -2
  3. package/lib/screenplay/abilities/BrowseTheWebWithProtractor.d.ts.map +1 -1
  4. package/lib/screenplay/abilities/BrowseTheWebWithProtractor.js +0 -9
  5. package/lib/screenplay/abilities/BrowseTheWebWithProtractor.js.map +1 -1
  6. package/lib/screenplay/models/ProtractorBrowsingSession.d.ts +2 -1
  7. package/lib/screenplay/models/ProtractorBrowsingSession.d.ts.map +1 -1
  8. package/lib/screenplay/models/ProtractorBrowsingSession.js +8 -1
  9. package/lib/screenplay/models/ProtractorBrowsingSession.js.map +1 -1
  10. package/lib/screenplay/models/ProtractorPage.d.ts +1 -0
  11. package/lib/screenplay/models/ProtractorPage.d.ts.map +1 -1
  12. package/lib/screenplay/models/ProtractorPage.js +4 -0
  13. package/lib/screenplay/models/ProtractorPage.js.map +1 -1
  14. package/lib/screenplay/models/locators/ProtractorLocator.d.ts +11 -1
  15. package/lib/screenplay/models/locators/ProtractorLocator.d.ts.map +1 -1
  16. package/lib/screenplay/models/locators/ProtractorLocator.js +7 -52
  17. package/lib/screenplay/models/locators/ProtractorLocator.js.map +1 -1
  18. package/lib/screenplay/models/locators/ProtractorSelectors.d.ts +10 -0
  19. package/lib/screenplay/models/locators/ProtractorSelectors.d.ts.map +1 -0
  20. package/lib/screenplay/models/locators/ProtractorSelectors.js +79 -0
  21. package/lib/screenplay/models/locators/ProtractorSelectors.js.map +1 -0
  22. package/package.json +11 -11
  23. package/src/screenplay/abilities/BrowseTheWebWithProtractor.ts +0 -12
  24. package/src/screenplay/models/ProtractorBrowsingSession.ts +14 -4
  25. package/src/screenplay/models/ProtractorPage.ts +13 -1
  26. package/src/screenplay/models/locators/ProtractorLocator.ts +7 -36
  27. package/src/screenplay/models/locators/ProtractorSelectors.ts +65 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,30 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.6.1](https://github.com/serenity-js/serenity-js/compare/v3.6.0...v3.6.1) (2023-07-11)
7
+
8
+ **Note:** Version bump only for package @serenity-js/protractor
9
+
10
+
11
+
12
+
13
+
14
+ # [3.6.0](https://github.com/serenity-js/serenity-js/compare/v3.5.0...v3.6.0) (2023-07-11)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **deps:** update dependency tiny-types to ^1.20.0 ([6d7bf43](https://github.com/serenity-js/serenity-js/commit/6d7bf43c6135968bc90869cb8f9782ed70ca8dd9))
20
+
21
+
22
+ ### Features
23
+
24
+ * **web:** you can now use Serenity/JS Screenplay Pattern APIs for UI component testing ([3c9aa4b](https://github.com/serenity-js/serenity-js/commit/3c9aa4b16d223844116ffcb21d23f9cc8b96a793)), closes [#1784](https://github.com/serenity-js/serenity-js/issues/1784)
25
+
26
+
27
+
28
+
29
+
6
30
  # [3.5.0](https://github.com/serenity-js/serenity-js/compare/v3.4.2...v3.5.0) (2023-07-02)
7
31
 
8
32
 
@@ -1,4 +1,3 @@
1
- import type { BrowserCapabilities } from '@serenity-js/web';
2
1
  import { BrowseTheWeb } from '@serenity-js/web';
3
2
  import type * as protractor from 'protractor';
4
3
  /**
@@ -52,7 +51,6 @@ export declare class BrowseTheWebWithProtractor extends BrowseTheWeb<protractor.
52
51
  * An instance of a protractor browser
53
52
  */
54
53
  constructor(browser: protractor.ProtractorBrowser);
55
- browserCapabilities(): Promise<BrowserCapabilities>;
56
54
  /**
57
55
  * Returns Protractor configuration parameter at `path`.
58
56
  *
@@ -1 +1 @@
1
- {"version":3,"file":"BrowseTheWebWithProtractor.d.ts","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWebWithProtractor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,KAAK,UAAU,MAAM,YAAY,CAAC;AAK9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,0BAA2B,SAAQ,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC;IAmBtE,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,iBAAiB;IAjB3D;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,iBAAiB,GAAG,0BAA0B;IAI/E;;;OAGG;gBACmB,OAAO,EAAE,UAAU,CAAC,iBAAiB;IAIrD,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAUzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;CAUlC"}
1
+ {"version":3,"file":"BrowseTheWebWithProtractor.d.ts","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWebWithProtractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,KAAK,UAAU,MAAM,YAAY,CAAC;AAI9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,0BAA2B,SAAQ,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC;IAmBtE,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,iBAAiB;IAjB3D;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,iBAAiB,GAAG,0BAA0B;IAI/E;;;OAGG;gBACmB,OAAO,EAAE,UAAU,CAAC,iBAAiB;IAI3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;CAUlC"}
@@ -4,7 +4,6 @@ exports.BrowseTheWebWithProtractor = void 0;
4
4
  const core_1 = require("@serenity-js/core");
5
5
  const web_1 = require("@serenity-js/web");
6
6
  const models_1 = require("../models");
7
- const promised_1 = require("../promised");
8
7
  /**
9
8
  * This implementation of the {@apilink Ability|ability} to {@apilink BrowseTheWeb}
10
9
  * enables the {@apilink Actor} to interact with web front-ends using [Protractor](http://www.protractortest.org/#/).
@@ -60,14 +59,6 @@ class BrowseTheWebWithProtractor extends web_1.BrowseTheWeb {
60
59
  super(new models_1.ProtractorBrowsingSession(browser));
61
60
  this.browser = browser;
62
61
  }
63
- async browserCapabilities() {
64
- const capabilities = await (0, promised_1.promised)(this.browser.getCapabilities());
65
- return {
66
- platformName: capabilities.get('platform'),
67
- browserName: capabilities.get('browserName'),
68
- browserVersion: capabilities.get('version'),
69
- };
70
- }
71
62
  /**
72
63
  * Returns Protractor configuration parameter at `path`.
73
64
  *
@@ -1 +1 @@
1
- {"version":3,"file":"BrowseTheWebWithProtractor.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWebWithProtractor.ts"],"names":[],"mappings":";;;AAAA,4CAAuD;AAEvD,0CAAgD;AAGhD,sCAAsD;AACtD,0CAAuC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAa,0BAA2B,SAAQ,kBAAsC;IAElF;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,OAAqC;QAC9C,OAAO,IAAI,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,YAAsB,OAAqC;QACvD,KAAK,CAAC,IAAI,kCAAyB,CAAC,OAAO,CAAC,CAAC,CAAC;QAD5B,YAAO,GAAP,OAAO,CAA8B;IAE3D,CAAC;IAED,KAAK,CAAC,mBAAmB;QACrB,MAAM,YAAY,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAEpE,OAAO;YACH,YAAY,EAAI,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;YAC5C,WAAW,EAAK,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC;YAC/C,cAAc,EAAE,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;SAC9C,CAAC;IACN,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,KAAK,CAAU,IAAY;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACjB,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;YACxB,IAAI,CAAE,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,EAAE;gBAC7C,MAAM,IAAI,yBAAkB,CAAC,qBAAsB,IAAK,gBAAgB,CAAC,CAAC;aAC7E;YAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACJ;AA9ED,gEA8EC"}
1
+ {"version":3,"file":"BrowseTheWebWithProtractor.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWebWithProtractor.ts"],"names":[],"mappings":";;;AAAA,4CAAuD;AACvD,0CAAgD;AAGhD,sCAAsD;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAa,0BAA2B,SAAQ,kBAAsC;IAElF;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,OAAqC;QAC9C,OAAO,IAAI,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,YAAsB,OAAqC;QACvD,KAAK,CAAC,IAAI,kCAAyB,CAAC,OAAO,CAAC,CAAC,CAAC;QAD5B,YAAO,GAAP,OAAO,CAA8B;IAE3D,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,KAAK,CAAU,IAAY;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACjB,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;YACxB,IAAI,CAAE,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,EAAE;gBAC7C,MAAM,IAAI,yBAAkB,CAAC,qBAAsB,IAAK,gBAAgB,CAAC,CAAC;aAC7E;YAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACJ;AApED,gEAoEC"}
@@ -1,3 +1,4 @@
1
+ import type { BrowserCapabilities } from '@serenity-js/web';
1
2
  import { BrowsingSession } from '@serenity-js/web';
2
3
  import type * as protractor from 'protractor';
3
4
  import { ProtractorPage } from '../models';
@@ -11,12 +12,12 @@ export declare class ProtractorBrowsingSession extends BrowsingSession<Protracto
11
12
  constructor(browser: protractor.ProtractorBrowser);
12
13
  allPages(): Promise<Array<ProtractorPage>>;
13
14
  /**
14
- * @override
15
15
  * @param page
16
16
  */
17
17
  changeCurrentPageTo(page: ProtractorPage): Promise<void>;
18
18
  private activeWindowHandle;
19
19
  currentPage(): Promise<ProtractorPage>;
20
20
  protected registerCurrentPage(): Promise<ProtractorPage>;
21
+ browserCapabilities(): Promise<BrowserCapabilities>;
21
22
  }
22
23
  //# sourceMappingURL=ProtractorBrowsingSession.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProtractorBrowsingSession.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorBrowsingSession.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,KAAK,UAAU,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAK3C;;;;GAIG;AACH,qBAAa,yBAA0B,SAAQ,eAAe,CAAC,cAAc,CAAC;IAE9D,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,iBAAiB;gBAArC,OAAO,EAAE,UAAU,CAAC,iBAAiB;IAI9D,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IA6BhD;;;OAGG;IACG,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;YAoBhD,kBAAkB;IAmBjB,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;cAuBrC,mBAAmB,IAAI,OAAO,CAAC,cAAc,CAAC;CAiBjE"}
1
+ {"version":3,"file":"ProtractorBrowsingSession.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorBrowsingSession.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,KAAK,UAAU,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAK3C;;;;GAIG;AACH,qBAAa,yBAA0B,SAAQ,eAAe,CAAC,cAAc,CAAC;IAE9D,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,iBAAiB;gBAArC,OAAO,EAAE,UAAU,CAAC,iBAAiB;IAIrD,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IA6BzD;;OAEG;IACY,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;YAoBzD,kBAAkB;IAmBjB,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;cAuB5B,mBAAmB,IAAI,OAAO,CAAC,cAAc,CAAC;IAkBxD,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;CASrE"}
@@ -34,7 +34,6 @@ class ProtractorBrowsingSession extends web_1.BrowsingSession {
34
34
  return super.allPages();
35
35
  }
36
36
  /**
37
- * @override
38
37
  * @param page
39
38
  */
40
39
  async changeCurrentPageTo(page) {
@@ -94,6 +93,14 @@ class ProtractorBrowsingSession extends web_1.BrowsingSession {
94
93
  this.register(page);
95
94
  return page;
96
95
  }
96
+ async browserCapabilities() {
97
+ const capabilities = await (0, promised_1.promised)(this.browser.getCapabilities());
98
+ return {
99
+ platformName: capabilities.get('platform'),
100
+ browserName: capabilities.get('browserName'),
101
+ browserVersion: capabilities.get('version'),
102
+ };
103
+ }
97
104
  }
98
105
  exports.ProtractorBrowsingSession = ProtractorBrowsingSession;
99
106
  //# sourceMappingURL=ProtractorBrowsingSession.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProtractorBrowsingSession.js","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorBrowsingSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProtractorBrowsingSession.js","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorBrowsingSession.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export declare class ProtractorPage extends Page<ElementFinder> {
19
19
  */
20
20
  private lastScriptExecutionSummary;
21
21
  constructor(session: ProtractorBrowsingSession, browser: ProtractorBrowser, modalDialogHandler: ModalDialogHandler, errorHandler: ProtractorErrorHandler, pageId: CorrelationId);
22
+ createPageElement(nativeElement: ElementFinder): PageElement<ElementFinder>;
22
23
  locate(selector: Selector): PageElement<ElementFinder>;
23
24
  locateAll(selector: Selector): PageElements<ElementFinder>;
24
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ProtractorPage.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorPage.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtG,OAAO,EAA4B,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAI1B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAE7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGvE;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,IAAI,CAAC,aAAa,CAAC;IAS/C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,YAAY;IATjC;;OAEG;IACH,OAAO,CAAC,0BAA0B,CAA6B;gBAG3D,OAAO,EAAE,yBAAyB,EACjB,OAAO,EAAE,iBAAiB,EAC3C,kBAAkB,EAAE,kBAAkB,EACrB,YAAY,EAAE,sBAAsB,EACrD,MAAM,EAAE,aAAa;IAUzB,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC;IAMtD,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC;IAM1D;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAM/D,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAMvB,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC/C,aAAa,CAAC,MAAM,EAAE,cAAc,SAAS,GAAG,EAAE,EACpD,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,cAAc,KAAK,MAAM,CAAC,EAC5D,GAAG,IAAI,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,CAAC;IAmBZ,kBAAkB,CAAC,MAAM,EAAE,UAAU,SAAS,GAAG,EAAE,EACrD,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,EACrG,GAAG,IAAI,EAAE,UAAU,GACpB,OAAO,CAAC,MAAM,CAAC;IAmBlB,yBAAyB,IAAI,GAAG;IAY1B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAmBjC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrC,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBhD,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAMxB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAMvB,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAMnB,YAAY,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAkB1D,eAAe,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBvE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;YAUrB,mBAAmB;CAmBpC"}
1
+ {"version":3,"file":"ProtractorPage.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorPage.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtG,OAAO,EAA4B,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAK1B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAE7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGvE;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,IAAI,CAAC,aAAa,CAAC;IAS/C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,YAAY;IATjC;;OAEG;IACH,OAAO,CAAC,0BAA0B,CAA6B;gBAG3D,OAAO,EAAE,yBAAyB,EACjB,OAAO,EAAE,iBAAiB,EAC3C,kBAAkB,EAAE,kBAAkB,EACrB,YAAY,EAAE,sBAAsB,EACrD,MAAM,EAAE,aAAa;IAUzB,iBAAiB,CAAC,aAAa,EAAE,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC;IAW3E,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC;IAMtD,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC;IAM1D;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAM/D,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAMvB,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC/C,aAAa,CAAC,MAAM,EAAE,cAAc,SAAS,GAAG,EAAE,EACpD,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,cAAc,KAAK,MAAM,CAAC,EAC5D,GAAG,IAAI,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,CAAC;IAmBZ,kBAAkB,CAAC,MAAM,EAAE,UAAU,SAAS,GAAG,EAAE,EACrD,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,EACrG,GAAG,IAAI,EAAE,UAAU,GACpB,OAAO,CAAC,MAAM,CAAC;IAmBlB,yBAAyB,IAAI,GAAG;IAY1B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAmBjC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrC,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBhD,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAMxB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAMvB,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAMnB,YAAY,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAkB1D,eAAe,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBvE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;YAUrB,mBAAmB;CAmBpC"}
@@ -6,6 +6,7 @@ const web_1 = require("@serenity-js/web");
6
6
  const url_1 = require("url");
7
7
  const promised_1 = require("../promised");
8
8
  const locators_1 = require("./locators");
9
+ const ProtractorSelectors_1 = require("./locators/ProtractorSelectors");
9
10
  const ProtractorCookie_1 = require("./ProtractorCookie");
10
11
  const ProtractorPageElement_1 = require("./ProtractorPageElement");
11
12
  /**
@@ -19,6 +20,9 @@ class ProtractorPage extends web_1.Page {
19
20
  this.browser = browser;
20
21
  this.errorHandler = errorHandler;
21
22
  }
23
+ createPageElement(nativeElement) {
24
+ return new ProtractorPageElement_1.ProtractorPageElement(new locators_1.ProtractorExistingElementLocator(this.rootLocator, ProtractorSelectors_1.ProtractorSelectors.selectorFrom(nativeElement.locator()), this.errorHandler, nativeElement));
25
+ }
22
26
  locate(selector) {
23
27
  return new ProtractorPageElement_1.ProtractorPageElement(new locators_1.ProtractorLocator(this.rootLocator, selector, this.errorHandler));
24
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ProtractorPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorPage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProtractorPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorPage.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import type { PageElement, RootLocator, Selector } from '@serenity-js/web';
2
2
  import { Locator } from '@serenity-js/web';
3
- import * as protractor from 'protractor';
3
+ import type * as protractor from 'protractor';
4
4
  import type { ProtractorErrorHandler } from '../ProtractorErrorHandler';
5
+ import type { ProtractorRootLocator } from './ProtractorRootLocator';
5
6
  /**
6
7
  * Protractor-specific implementation of {@apilink Locator}.
7
8
  *
@@ -20,4 +21,13 @@ export declare class ProtractorLocator extends Locator<protractor.ElementFinder,
20
21
  element(): PageElement<protractor.ElementFinder>;
21
22
  allElements(): Promise<Array<PageElement<protractor.ElementFinder>>>;
22
23
  }
24
+ /**
25
+ * @internal
26
+ */
27
+ export declare class ProtractorExistingElementLocator extends ProtractorLocator {
28
+ private readonly existingNativeElement;
29
+ constructor(parent: ProtractorRootLocator, selector: Selector, errorHandler: ProtractorErrorHandler, existingNativeElement: protractor.ElementFinder);
30
+ nativeElement(): Promise<protractor.ElementFinder>;
31
+ allNativeElements(): Promise<Array<protractor.ElementFinder>>;
32
+ }
23
33
  //# sourceMappingURL=ProtractorLocator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProtractorLocator.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/ProtractorLocator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAmE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC5G,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAGzC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAIxE;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC;IAKpF,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAF7B,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,EAC7C,QAAQ,EAAE,QAAQ,EACD,YAAY,EAAE,sBAAsB;IAMzD,SAAS,CAAC,cAAc,IAAI,UAAU,CAAC,OAAO;IAgCxC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAU7B,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;YAS1C,oBAAoB;IAU5B,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAKnE,EAAE,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC;IAIpF,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC;IAIxE,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC;IAI1C,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;CAc7E"}
1
+ {"version":3,"file":"ProtractorLocator.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/ProtractorLocator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,KAAK,UAAU,MAAM,YAAY,CAAC;AAG9C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGrE;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC;IAKpF,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAF7B,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,EAC7C,QAAQ,EAAE,QAAQ,EACD,YAAY,EAAE,sBAAsB;IAKzD,SAAS,CAAC,cAAc,IAAI,UAAU,CAAC,OAAO;IAIxC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAU7B,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;YAS1C,oBAAoB;IAU5B,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAKnE,EAAE,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC;IAIpF,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC;IAIxE,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC;IAI1C,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;CAc7E;AAED;;GAEG;AACH,qBAAa,gCAAiC,SAAQ,iBAAiB;IAK/D,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBAHtC,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,sBAAsB,EACnB,qBAAqB,EAAE,UAAU,CAAC,aAAa;IAK9D,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;IAIlD,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;CAGtE"}
@@ -1,34 +1,10 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.ProtractorLocator = void 0;
27
- const core_1 = require("@serenity-js/core");
3
+ exports.ProtractorExistingElementLocator = exports.ProtractorLocator = void 0;
28
4
  const web_1 = require("@serenity-js/web");
29
- const protractor = __importStar(require("protractor"));
30
5
  const unpromisedWebElement_1 = require("../../unpromisedWebElement");
31
6
  const ProtractorPageElement_1 = require("../ProtractorPageElement");
7
+ const ProtractorSelectors_1 = require("./ProtractorSelectors");
32
8
  /**
33
9
  * Protractor-specific implementation of {@apilink Locator}.
34
10
  *
@@ -39,30 +15,8 @@ class ProtractorLocator extends web_1.Locator {
39
15
  super(parent, selector);
40
16
  this.errorHandler = errorHandler;
41
17
  }
42
- // todo: refactor; replace with a map and some more generic lookup mechanism
43
18
  nativeSelector() {
44
- if (this.selector instanceof web_1.ByCss) {
45
- return protractor.by.css(this.selector.value);
46
- }
47
- if (this.selector instanceof web_1.ByDeepCss) {
48
- if (!protractor.by.shadowDomCss) {
49
- throw new core_1.LogicError(`By.deepCss() requires query-selector-shadow-dom plugin, which Serenity/JS ProtractorFrameworkAdapter registers by default. If you're using Serenity/JS without ProtractorFrameworkAdapter, please register the plugin yourself.`);
50
- }
51
- return protractor.by.shadowDomCss(this.selector.value.replace('>>>', '').trim());
52
- }
53
- if (this.selector instanceof web_1.ByCssContainingText) {
54
- return protractor.by.cssContainingText(this.selector.value, this.selector.text);
55
- }
56
- if (this.selector instanceof web_1.ById) {
57
- return protractor.by.id(this.selector.value);
58
- }
59
- if (this.selector instanceof web_1.ByTagName) {
60
- return protractor.by.tagName(this.selector.value);
61
- }
62
- if (this.selector instanceof web_1.ByXPath) {
63
- return protractor.by.xpath(this.selector.value);
64
- }
65
- throw new core_1.LogicError((0, core_1.f) `${this.selector} is not supported by ${this.constructor.name}`);
19
+ return ProtractorSelectors_1.ProtractorSelectors.locatorFrom(this.selector);
66
20
  }
67
21
  async isPresent() {
68
22
  try {
@@ -103,14 +57,14 @@ class ProtractorLocator extends web_1.Locator {
103
57
  }
104
58
  async allElements() {
105
59
  const elements = await this.allNativeElements();
106
- return Promise.all(elements.map(childElement => new ProtractorPageElement_1.ProtractorPageElement(new ExistingElementLocator(this.parent, this.selector, this.errorHandler, (0, unpromisedWebElement_1.unpromisedWebElement)(childElement)))));
60
+ return Promise.all(elements.map(childElement => new ProtractorPageElement_1.ProtractorPageElement(new ProtractorExistingElementLocator(this.parent, this.selector, this.errorHandler, (0, unpromisedWebElement_1.unpromisedWebElement)(childElement)))));
107
61
  }
108
62
  }
109
63
  exports.ProtractorLocator = ProtractorLocator;
110
64
  /**
111
- * @private
65
+ * @internal
112
66
  */
113
- class ExistingElementLocator extends ProtractorLocator {
67
+ class ProtractorExistingElementLocator extends ProtractorLocator {
114
68
  constructor(parent, selector, errorHandler, existingNativeElement) {
115
69
  super(parent, selector, errorHandler);
116
70
  this.existingNativeElement = existingNativeElement;
@@ -122,4 +76,5 @@ class ExistingElementLocator extends ProtractorLocator {
122
76
  return [this.existingNativeElement];
123
77
  }
124
78
  }
79
+ exports.ProtractorExistingElementLocator = ProtractorExistingElementLocator;
125
80
  //# sourceMappingURL=ProtractorLocator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProtractorLocator.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/ProtractorLocator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProtractorLocator.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/ProtractorLocator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type Selector } from '@serenity-js/web';
2
+ import * as protractor from 'protractor';
3
+ export declare class ProtractorSelectors {
4
+ static selectorFrom(nativeLocator: protractor.Locator & {
5
+ using?: string;
6
+ value: string;
7
+ }): Selector;
8
+ static locatorFrom(selector: Selector): protractor.Locator;
9
+ }
10
+ //# sourceMappingURL=ProtractorSelectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtractorSelectors.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/ProtractorSelectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAmE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClH,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,qBAAa,mBAAmB;IAC5B,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,UAAU,CAAC,OAAO,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,QAAQ;IA4BpG,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAAC,OAAO;CA+B7D"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.ProtractorSelectors = void 0;
27
+ const core_1 = require("@serenity-js/core");
28
+ const web_1 = require("@serenity-js/web");
29
+ const protractor = __importStar(require("protractor"));
30
+ class ProtractorSelectors {
31
+ static selectorFrom(nativeLocator) {
32
+ switch (true) {
33
+ case nativeLocator.using === 'xpath':
34
+ return new web_1.ByXPath(nativeLocator.value);
35
+ case nativeLocator.toString().startsWith('by.shadowDomCss'): {
36
+ const [, selector] = nativeLocator.toString().match(/by\.shadowDomCss\("(.*)"\)$/);
37
+ return new web_1.ByDeepCss(selector);
38
+ }
39
+ case nativeLocator.toString().startsWith('by.cssContainingText'): {
40
+ // https://github.com/angular/protractor/blob/4bc80d1a459542d883ea9200e4e1f48d265d0fda/lib/locators.ts#L428
41
+ const [, selector, text] = nativeLocator.toString().match(/by\.cssContainingText\("(.*)", "(.*)"\)$/);
42
+ return new web_1.ByCssContainingText(selector, text);
43
+ }
44
+ case nativeLocator.using === 'css selector' && nativeLocator.value.startsWith('*[id='): {
45
+ const [, selector] = nativeLocator.value.match(/\*\[id="(.*)"]$/);
46
+ return new web_1.ById(selector);
47
+ }
48
+ // case nativeLocator.using === 'css selector':
49
+ default:
50
+ return new web_1.ByCss(nativeLocator.value);
51
+ }
52
+ }
53
+ static locatorFrom(selector) {
54
+ if (selector instanceof web_1.ByCss) {
55
+ return protractor.by.css(selector.value);
56
+ }
57
+ if (selector instanceof web_1.ByDeepCss) {
58
+ if (!protractor.by.shadowDomCss) {
59
+ throw new core_1.LogicError(`By.deepCss() requires query-selector-shadow-dom plugin, which Serenity/JS ProtractorFrameworkAdapter registers by default. If you're using Serenity/JS without ProtractorFrameworkAdapter, please register the plugin yourself.`);
60
+ }
61
+ return protractor.by.shadowDomCss(selector.value.replace('>>>', '').trim());
62
+ }
63
+ if (selector instanceof web_1.ByCssContainingText) {
64
+ return protractor.by.cssContainingText(selector.value, selector.text);
65
+ }
66
+ if (selector instanceof web_1.ById) {
67
+ return protractor.by.id(selector.value);
68
+ }
69
+ if (selector instanceof web_1.ByTagName) {
70
+ return protractor.by.tagName(selector.value);
71
+ }
72
+ if (selector instanceof web_1.ByXPath) {
73
+ return protractor.by.xpath(selector.value);
74
+ }
75
+ throw new core_1.LogicError((0, core_1.f) `${selector} is not supported by ${this.constructor.name}`);
76
+ }
77
+ }
78
+ exports.ProtractorSelectors = ProtractorSelectors;
79
+ //# sourceMappingURL=ProtractorSelectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtractorSelectors.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/ProtractorSelectors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAkD;AAClD,0CAAkH;AAClH,uDAAyC;AAEzC,MAAa,mBAAmB;IAC5B,MAAM,CAAC,YAAY,CAAC,aAAqE;QAErF,QAAQ,IAAI,EAAE;YACV,KAAK,aAAa,CAAC,KAAK,KAAK,OAAO;gBAChC,OAAO,IAAI,aAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAE5C,KAAK,aAAa,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACzD,MAAM,CAAE,AAAD,EAAG,QAAQ,CAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACrF,OAAO,IAAI,eAAS,CAAC,QAAQ,CAAC,CAAC;aAClC;YAED,KAAK,aAAa,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAC9D,2GAA2G;gBAC3G,MAAM,CAAE,AAAD,EAAG,QAAQ,EAAE,IAAI,CAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBACxG,OAAO,IAAI,yBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;aAClD;YAED,KAAK,aAAa,CAAC,KAAK,KAAK,cAAc,IAAI,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;gBACpF,MAAM,CAAE,AAAD,EAAG,QAAQ,CAAE,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;gBACnE,OAAO,IAAI,UAAI,CAAC,QAAQ,CAAC,CAAC;aAC7B;YAED,+CAA+C;YAC/C;gBACI,OAAO,IAAI,WAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAC7C;IACL,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,QAAkB;QACjC,IAAI,QAAQ,YAAY,WAAK,EAAE;YAC3B,OAAO,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC5C;QAED,IAAI,QAAQ,YAAY,eAAS,EAAE;YAC/B,IAAI,CAAE,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE;gBAC9B,MAAM,IAAI,iBAAU,CAAC,iOAAiO,CAAC,CAAA;aAC1P;YAED,OAAO,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SAC/E;QAED,IAAI,QAAQ,YAAY,yBAAmB,EAAE;YACzC,OAAO,UAAU,CAAC,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;SACzE;QAED,IAAI,QAAQ,YAAY,UAAI,EAAE;YAC1B,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC3C;QAED,IAAI,QAAQ,YAAY,eAAS,EAAE;YAC/B,OAAO,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAChD;QAED,IAAI,QAAQ,YAAY,aAAO,EAAE;YAC7B,OAAO,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC9C;QAED,MAAM,IAAI,iBAAU,CAAC,IAAA,QAAC,EAAC,GAAI,QAAS,wBAAyB,IAAI,CAAC,WAAW,CAAC,IAAK,EAAE,CAAC,CAAC;IAC3F,CAAC;CACJ;AA5DD,kDA4DC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serenity-js/protractor",
3
- "version": "3.5.0",
3
+ "version": "3.6.1",
4
4
  "description": "Test your web apps with Serenity/JS",
5
5
  "author": {
6
6
  "name": "Jan Molak",
@@ -48,12 +48,12 @@
48
48
  "node": "^16.13 || ^18.12 || ^20"
49
49
  },
50
50
  "dependencies": {
51
- "@serenity-js/core": "3.5.0",
52
- "@serenity-js/web": "3.5.0",
51
+ "@serenity-js/core": "3.6.1",
52
+ "@serenity-js/web": "3.6.1",
53
53
  "deepmerge": "^4.3.1",
54
54
  "query-selector-shadow-dom": "^1.0.1",
55
55
  "selenium-webdriver": "^3.6.0",
56
- "tiny-types": "^1.19.1"
56
+ "tiny-types": "^1.20.0"
57
57
  },
58
58
  "peerDependencies": {
59
59
  "@serenity-js/cucumber": "^3.0.0",
@@ -75,12 +75,12 @@
75
75
  },
76
76
  "devDependencies": {
77
77
  "@integration/testing-tools": "3.0.0",
78
- "@serenity-js/assertions": "3.5.0",
79
- "@serenity-js/cucumber": "3.5.0",
80
- "@serenity-js/jasmine": "3.5.0",
81
- "@serenity-js/local-server": "3.5.0",
82
- "@serenity-js/mocha": "3.5.0",
83
- "@serenity-js/rest": "3.5.0",
78
+ "@serenity-js/assertions": "3.6.1",
79
+ "@serenity-js/cucumber": "3.6.1",
80
+ "@serenity-js/jasmine": "3.6.1",
81
+ "@serenity-js/local-server": "3.6.1",
82
+ "@serenity-js/mocha": "3.6.1",
83
+ "@serenity-js/rest": "3.6.1",
84
84
  "@serenity-js/web": "3.1.1",
85
85
  "@types/chai": "^4.3.5",
86
86
  "@types/express": "^4.17.17",
@@ -101,5 +101,5 @@
101
101
  "ts-node": "^10.9.1",
102
102
  "typescript": "^5.1.6"
103
103
  },
104
- "gitHead": "c34ec9a491ded36cc178f219a9b3cae058c34c2b"
104
+ "gitHead": "3e7242840af96081c63d12b116e3f95f74b97160"
105
105
  }
@@ -1,10 +1,8 @@
1
1
  import { ConfigurationError } from '@serenity-js/core';
2
- import type { BrowserCapabilities} from '@serenity-js/web';
3
2
  import { BrowseTheWeb } from '@serenity-js/web';
4
3
  import type * as protractor from 'protractor';
5
4
 
6
5
  import { ProtractorBrowsingSession } from '../models';
7
- import { promised } from '../promised';
8
6
 
9
7
  /**
10
8
  * This implementation of the {@apilink Ability|ability} to {@apilink BrowseTheWeb}
@@ -63,16 +61,6 @@ export class BrowseTheWebWithProtractor extends BrowseTheWeb<protractor.ElementF
63
61
  super(new ProtractorBrowsingSession(browser));
64
62
  }
65
63
 
66
- async browserCapabilities(): Promise<BrowserCapabilities> {
67
- const capabilities = await promised(this.browser.getCapabilities());
68
-
69
- return {
70
- platformName: capabilities.get('platform'),
71
- browserName: capabilities.get('browserName'),
72
- browserVersion: capabilities.get('version'),
73
- };
74
- }
75
-
76
64
  /**
77
65
  * Returns Protractor configuration parameter at `path`.
78
66
  *
@@ -1,4 +1,5 @@
1
1
  import { CorrelationId } from '@serenity-js/core/lib/model';
2
+ import type { BrowserCapabilities } from '@serenity-js/web';
2
3
  import { BrowsingSession } from '@serenity-js/web';
3
4
  import type * as protractor from 'protractor';
4
5
 
@@ -18,7 +19,7 @@ export class ProtractorBrowsingSession extends BrowsingSession<ProtractorPage> {
18
19
  super();
19
20
  }
20
21
 
21
- async allPages(): Promise<Array<ProtractorPage>> {
22
+ override async allPages(): Promise<Array<ProtractorPage>> {
22
23
  // scan all the active window handles and add any newly opened windows if needed
23
24
  const windowHandles: string[] = await promised(this.browser.getAllWindowHandles());
24
25
 
@@ -48,10 +49,9 @@ export class ProtractorBrowsingSession extends BrowsingSession<ProtractorPage> {
48
49
  }
49
50
 
50
51
  /**
51
- * @override
52
52
  * @param page
53
53
  */
54
- async changeCurrentPageTo(page: ProtractorPage): Promise<void> {
54
+ override async changeCurrentPageTo(page: ProtractorPage): Promise<void> {
55
55
  const currentPage = await this.currentPage();
56
56
 
57
57
  // are we already on this page?
@@ -113,7 +113,7 @@ export class ProtractorBrowsingSession extends BrowsingSession<ProtractorPage> {
113
113
  return this.currentBrowserPage;
114
114
  }
115
115
 
116
- protected async registerCurrentPage(): Promise<ProtractorPage> {
116
+ protected override async registerCurrentPage(): Promise<ProtractorPage> {
117
117
  const windowHandle = await this.browser.getWindowHandle();
118
118
 
119
119
  const errorHandler = new ProtractorErrorHandler();
@@ -130,4 +130,14 @@ export class ProtractorBrowsingSession extends BrowsingSession<ProtractorPage> {
130
130
 
131
131
  return page;
132
132
  }
133
+
134
+ override async browserCapabilities(): Promise<BrowserCapabilities> {
135
+ const capabilities = await promised(this.browser.getCapabilities());
136
+
137
+ return {
138
+ platformName: capabilities.get('platform'),
139
+ browserName: capabilities.get('browserName'),
140
+ browserVersion: capabilities.get('version'),
141
+ };
142
+ }
133
143
  }
@@ -6,7 +6,8 @@ import type { ElementFinder, ProtractorBrowser } from 'protractor';
6
6
  import { URL } from 'url';
7
7
 
8
8
  import { promised } from '../promised';
9
- import { ProtractorLocator, ProtractorRootLocator } from './locators';
9
+ import { ProtractorExistingElementLocator, ProtractorLocator, ProtractorRootLocator } from './locators';
10
+ import { ProtractorSelectors } from './locators/ProtractorSelectors';
10
11
  import type { ProtractorBrowsingSession } from './ProtractorBrowsingSession';
11
12
  import { ProtractorCookie } from './ProtractorCookie';
12
13
  import type { ProtractorErrorHandler } from './ProtractorErrorHandler';
@@ -39,6 +40,17 @@ export class ProtractorPage extends Page<ElementFinder> {
39
40
  );
40
41
  }
41
42
 
43
+ createPageElement(nativeElement: ElementFinder): PageElement<ElementFinder> {
44
+ return new ProtractorPageElement(
45
+ new ProtractorExistingElementLocator(
46
+ this.rootLocator as ProtractorRootLocator,
47
+ ProtractorSelectors.selectorFrom(nativeElement.locator()),
48
+ this.errorHandler,
49
+ nativeElement,
50
+ )
51
+ )
52
+ }
53
+
42
54
  locate(selector: Selector): PageElement<ElementFinder> {
43
55
  return new ProtractorPageElement(
44
56
  new ProtractorLocator(this.rootLocator, selector, this.errorHandler)
@@ -1,12 +1,12 @@
1
- import { f, LogicError } from '@serenity-js/core';
2
1
  import type { PageElement, RootLocator, Selector } from '@serenity-js/web';
3
- import { ByCss, ByCssContainingText, ByDeepCss, ById, ByTagName, ByXPath, Locator } from '@serenity-js/web';
4
- import * as protractor from 'protractor';
2
+ import { Locator } from '@serenity-js/web';
3
+ import type * as protractor from 'protractor';
5
4
 
6
5
  import { unpromisedWebElement } from '../../unpromisedWebElement';
7
6
  import type { ProtractorErrorHandler } from '../ProtractorErrorHandler';
8
7
  import { ProtractorPageElement } from '../ProtractorPageElement';
9
8
  import type { ProtractorRootLocator } from './ProtractorRootLocator';
9
+ import { ProtractorSelectors } from './ProtractorSelectors';
10
10
 
11
11
  /**
12
12
  * Protractor-specific implementation of {@apilink Locator}.
@@ -23,37 +23,8 @@ export class ProtractorLocator extends Locator<protractor.ElementFinder, protrac
23
23
  super(parent, selector);
24
24
  }
25
25
 
26
- // todo: refactor; replace with a map and some more generic lookup mechanism
27
26
  protected nativeSelector(): protractor.Locator {
28
- if (this.selector instanceof ByCss) {
29
- return protractor.by.css(this.selector.value);
30
- }
31
-
32
- if (this.selector instanceof ByDeepCss) {
33
- if (! protractor.by.shadowDomCss) {
34
- throw new LogicError(`By.deepCss() requires query-selector-shadow-dom plugin, which Serenity/JS ProtractorFrameworkAdapter registers by default. If you're using Serenity/JS without ProtractorFrameworkAdapter, please register the plugin yourself.`)
35
- }
36
-
37
- return protractor.by.shadowDomCss(this.selector.value.replace('>>>', '').trim());
38
- }
39
-
40
- if (this.selector instanceof ByCssContainingText) {
41
- return protractor.by.cssContainingText(this.selector.value, this.selector.text);
42
- }
43
-
44
- if (this.selector instanceof ById) {
45
- return protractor.by.id(this.selector.value);
46
- }
47
-
48
- if (this.selector instanceof ByTagName) {
49
- return protractor.by.tagName(this.selector.value);
50
- }
51
-
52
- if (this.selector instanceof ByXPath) {
53
- return protractor.by.xpath(this.selector.value);
54
- }
55
-
56
- throw new LogicError(f `${ this.selector } is not supported by ${ this.constructor.name }`);
27
+ return ProtractorSelectors.locatorFrom(this.selector);
57
28
  }
58
29
 
59
30
  async isPresent(): Promise<boolean> {
@@ -107,7 +78,7 @@ export class ProtractorLocator extends Locator<protractor.ElementFinder, protrac
107
78
 
108
79
  return Promise.all(elements.map(childElement =>
109
80
  new ProtractorPageElement(
110
- new ExistingElementLocator(
81
+ new ProtractorExistingElementLocator(
111
82
  this.parent as ProtractorRootLocator,
112
83
  this.selector,
113
84
  this.errorHandler,
@@ -119,9 +90,9 @@ export class ProtractorLocator extends Locator<protractor.ElementFinder, protrac
119
90
  }
120
91
 
121
92
  /**
122
- * @private
93
+ * @internal
123
94
  */
124
- class ExistingElementLocator extends ProtractorLocator {
95
+ export class ProtractorExistingElementLocator extends ProtractorLocator {
125
96
  constructor(
126
97
  parent: ProtractorRootLocator,
127
98
  selector: Selector,
@@ -0,0 +1,65 @@
1
+ import { f, LogicError } from '@serenity-js/core';
2
+ import { ByCss, ByCssContainingText, ByDeepCss, ById, ByTagName, ByXPath, type Selector } from '@serenity-js/web';
3
+ import * as protractor from 'protractor';
4
+
5
+ export class ProtractorSelectors {
6
+ static selectorFrom(nativeLocator: protractor.Locator & { using?: string, value: string }): Selector {
7
+
8
+ switch (true) {
9
+ case nativeLocator.using === 'xpath':
10
+ return new ByXPath(nativeLocator.value);
11
+
12
+ case nativeLocator.toString().startsWith('by.shadowDomCss'): {
13
+ const [ , selector ] = nativeLocator.toString().match(/by\.shadowDomCss\("(.*)"\)$/);
14
+ return new ByDeepCss(selector);
15
+ }
16
+
17
+ case nativeLocator.toString().startsWith('by.cssContainingText'): {
18
+ // https://github.com/angular/protractor/blob/4bc80d1a459542d883ea9200e4e1f48d265d0fda/lib/locators.ts#L428
19
+ const [ , selector, text ] = nativeLocator.toString().match(/by\.cssContainingText\("(.*)", "(.*)"\)$/);
20
+ return new ByCssContainingText(selector, text);
21
+ }
22
+
23
+ case nativeLocator.using === 'css selector' && nativeLocator.value.startsWith('*[id='): {
24
+ const [ , selector ] = nativeLocator.value.match(/\*\[id="(.*)"]$/)
25
+ return new ById(selector);
26
+ }
27
+
28
+ // case nativeLocator.using === 'css selector':
29
+ default:
30
+ return new ByCss(nativeLocator.value);
31
+ }
32
+ }
33
+
34
+ static locatorFrom(selector: Selector): protractor.Locator {
35
+ if (selector instanceof ByCss) {
36
+ return protractor.by.css(selector.value);
37
+ }
38
+
39
+ if (selector instanceof ByDeepCss) {
40
+ if (! protractor.by.shadowDomCss) {
41
+ throw new LogicError(`By.deepCss() requires query-selector-shadow-dom plugin, which Serenity/JS ProtractorFrameworkAdapter registers by default. If you're using Serenity/JS without ProtractorFrameworkAdapter, please register the plugin yourself.`)
42
+ }
43
+
44
+ return protractor.by.shadowDomCss(selector.value.replace('>>>', '').trim());
45
+ }
46
+
47
+ if (selector instanceof ByCssContainingText) {
48
+ return protractor.by.cssContainingText(selector.value, selector.text);
49
+ }
50
+
51
+ if (selector instanceof ById) {
52
+ return protractor.by.id(selector.value);
53
+ }
54
+
55
+ if (selector instanceof ByTagName) {
56
+ return protractor.by.tagName(selector.value);
57
+ }
58
+
59
+ if (selector instanceof ByXPath) {
60
+ return protractor.by.xpath(selector.value);
61
+ }
62
+
63
+ throw new LogicError(f `${ selector } is not supported by ${ this.constructor.name }`);
64
+ }
65
+ }