@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.
- package/CHANGELOG.md +24 -0
- package/lib/screenplay/abilities/BrowseTheWebWithProtractor.d.ts +0 -2
- package/lib/screenplay/abilities/BrowseTheWebWithProtractor.d.ts.map +1 -1
- package/lib/screenplay/abilities/BrowseTheWebWithProtractor.js +0 -9
- package/lib/screenplay/abilities/BrowseTheWebWithProtractor.js.map +1 -1
- package/lib/screenplay/models/ProtractorBrowsingSession.d.ts +2 -1
- package/lib/screenplay/models/ProtractorBrowsingSession.d.ts.map +1 -1
- package/lib/screenplay/models/ProtractorBrowsingSession.js +8 -1
- package/lib/screenplay/models/ProtractorBrowsingSession.js.map +1 -1
- package/lib/screenplay/models/ProtractorPage.d.ts +1 -0
- package/lib/screenplay/models/ProtractorPage.d.ts.map +1 -1
- package/lib/screenplay/models/ProtractorPage.js +4 -0
- package/lib/screenplay/models/ProtractorPage.js.map +1 -1
- package/lib/screenplay/models/locators/ProtractorLocator.d.ts +11 -1
- package/lib/screenplay/models/locators/ProtractorLocator.d.ts.map +1 -1
- package/lib/screenplay/models/locators/ProtractorLocator.js +7 -52
- package/lib/screenplay/models/locators/ProtractorLocator.js.map +1 -1
- package/lib/screenplay/models/locators/ProtractorSelectors.d.ts +10 -0
- package/lib/screenplay/models/locators/ProtractorSelectors.d.ts.map +1 -0
- package/lib/screenplay/models/locators/ProtractorSelectors.js +79 -0
- package/lib/screenplay/models/locators/ProtractorSelectors.js.map +1 -0
- package/package.json +11 -11
- package/src/screenplay/abilities/BrowseTheWebWithProtractor.ts +0 -12
- package/src/screenplay/models/ProtractorBrowsingSession.ts +14 -4
- package/src/screenplay/models/ProtractorPage.ts +13 -1
- package/src/screenplay/models/locators/ProtractorLocator.ts +7 -36
- 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,
|
|
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;
|
|
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;
|
|
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":";;;AAAA,uDAA4D;
|
|
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;
|
|
1
|
+
{"version":3,"file":"ProtractorPage.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorPage.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":";;;AAAA,4CAA+C;AAG/C,0CAAqF;AAErF,6BAA0B;AAE1B,0CAAuC;AACvC,
|
|
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":"
|
|
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
|
-
|
|
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
|
|
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
|
-
* @
|
|
65
|
+
* @internal
|
|
112
66
|
*/
|
|
113
|
-
class
|
|
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":"
|
|
1
|
+
{"version":3,"file":"ProtractorLocator.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/ProtractorLocator.ts"],"names":[],"mappings":";;;AACA,0CAA2C;AAG3C,qEAAkE;AAElE,oEAAiE;AAEjE,+DAA4D;AAE5D;;;;GAIG;AACH,MAAa,iBAAkB,SAAQ,aAAqD;IAExF,YACI,MAA6C,EAC7C,QAAkB,EACD,YAAoC;QAErD,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAFP,iBAAY,GAAZ,YAAY,CAAwB;IAGzD,CAAC;IAES,cAAc;QACpB,OAAO,yCAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,SAAS;QACX,IAAI;YACA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAClD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;SAC3B;QACD,MAAM;YACF,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAED,KAAK,CAAC,aAAa;QACf,IAAI;YACA,OAAO,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC5C;QACD,OAAO,KAAK,EAAE;YACV,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;SAC7F;IACL,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,IAAA,2CAAoB,EAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAEjF,+GAA+G;QAC/G,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QAEzB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,iBAAiB;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAA+C,CAAC;IAC3F,CAAC;IAED,EAAE,CAAC,MAAyB;QACxB,OAAO,IAAI,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,KAAwB;QAC3B,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO;QACH,OAAO,IAAI,6CAAqB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,WAAW;QACb,MAAM,QAAQ,GAAQ,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAErD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAC3C,IAAI,6CAAqB,CACrB,IAAI,gCAAgC,CAChC,IAAI,CAAC,MAA+B,EACpC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,YAAY,EACjB,IAAA,2CAAoB,EAAC,YAAY,CAAC,CACrC,CACJ,CACJ,CAAC,CAAC;IACP,CAAC;CACJ;AA1ED,8CA0EC;AAED;;GAEG;AACH,MAAa,gCAAiC,SAAQ,iBAAiB;IACnE,YACI,MAA6B,EAC7B,QAAkB,EAClB,YAAoC,EACnB,qBAA+C;QAEhE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAFrB,0BAAqB,GAArB,qBAAqB,CAA0B;IAGpE,CAAC;IAED,KAAK,CAAC,aAAa;QACf,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,iBAAiB;QACnB,OAAO,CAAE,IAAI,CAAC,qBAAqB,CAAE,CAAC;IAC1C,CAAC;CACJ;AAjBD,4EAiBC"}
|
|
@@ -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.
|
|
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.
|
|
52
|
-
"@serenity-js/web": "3.
|
|
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.
|
|
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.
|
|
79
|
-
"@serenity-js/cucumber": "3.
|
|
80
|
-
"@serenity-js/jasmine": "3.
|
|
81
|
-
"@serenity-js/local-server": "3.
|
|
82
|
-
"@serenity-js/mocha": "3.
|
|
83
|
-
"@serenity-js/rest": "3.
|
|
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": "
|
|
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 {
|
|
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
|
-
|
|
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
|
|
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
|
-
* @
|
|
93
|
+
* @internal
|
|
123
94
|
*/
|
|
124
|
-
class
|
|
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
|
+
}
|