@serenity-js/webdriverio 3.0.0-rc.12 → 3.0.0-rc.13
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 +11 -0
- package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts +1 -2
- package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.js +0 -4
- package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.js.map +1 -1
- package/lib/screenplay/models/WebdriverIOPage.d.ts +2 -4
- package/lib/screenplay/models/WebdriverIOPage.js +8 -8
- package/lib/screenplay/models/WebdriverIOPage.js.map +1 -1
- package/lib/screenplay/models/WebdriverIOPageElement.d.ts +2 -1
- package/lib/screenplay/models/WebdriverIOPageElement.js +42 -0
- package/lib/screenplay/models/WebdriverIOPageElement.js.map +1 -1
- package/lib/screenplay/models/index.d.ts +0 -1
- package/lib/screenplay/models/index.js +0 -1
- package/lib/screenplay/models/index.js.map +1 -1
- package/package.json +7 -26
- package/src/screenplay/abilities/BrowseTheWebWithWebdriverIO.ts +2 -7
- package/src/screenplay/models/WebdriverIOPage.ts +10 -10
- package/src/screenplay/models/WebdriverIOPageElement.ts +54 -1
- package/src/screenplay/models/index.ts +0 -1
- package/lib/screenplay/models/WebdriverIOFrame.d.ts +0 -10
- package/lib/screenplay/models/WebdriverIOFrame.js +0 -34
- package/lib/screenplay/models/WebdriverIOFrame.js.map +0 -1
- package/src/screenplay/models/WebdriverIOFrame.ts +0 -38
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
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.0.0-rc.13](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.12...v3.0.0-rc.13) (2022-03-02)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **web:** combined Frame and PageElement so they can be Switch-ed to ([1b7ab7c](https://github.com/serenity-js/serenity-js/commit/1b7ab7c828034a14ba801cbfa97acc203fd55adf)), closes [#82](https://github.com/serenity-js/serenity-js/issues/82) [#227](https://github.com/serenity-js/serenity-js/issues/227) [#233](https://github.com/serenity-js/serenity-js/issues/233) [#365](https://github.com/serenity-js/serenity-js/issues/365)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
# [3.0.0-rc.12](https://github.com/serenity-js/serenity-js/compare/v2.33.2...v3.0.0-rc.12) (2022-02-23)
|
|
7
18
|
|
|
8
19
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Duration } from '@serenity-js/core';
|
|
2
|
-
import { BrowserCapabilities, BrowseTheWeb, Cookie, CookieData,
|
|
2
|
+
import { BrowserCapabilities, BrowseTheWeb, Cookie, CookieData, Key, ModalDialog, Page } from '@serenity-js/web';
|
|
3
3
|
import type * as wdio from 'webdriverio';
|
|
4
4
|
import { WebdriverIONativeElementRoot } from '../models/locators';
|
|
5
5
|
/**
|
|
@@ -81,7 +81,6 @@ export declare class BrowseTheWebWithWebdriverIO extends BrowseTheWeb<wdio.Eleme
|
|
|
81
81
|
* @returns {Promise<Array<Page>>}
|
|
82
82
|
*/
|
|
83
83
|
allPages(): Promise<Array<Page>>;
|
|
84
|
-
frame(bySelector: Selector): Promise<Frame<any>>;
|
|
85
84
|
modalDialog(): Promise<ModalDialog>;
|
|
86
85
|
/**
|
|
87
86
|
* @desc
|
|
@@ -125,10 +125,6 @@ class BrowseTheWebWithWebdriverIO extends web_1.BrowseTheWeb {
|
|
|
125
125
|
const windowHandles = await this.browser.getWindowHandles();
|
|
126
126
|
return windowHandles.map(windowHandle => new models_1.WebdriverIOPage(this.browser, windowHandle));
|
|
127
127
|
}
|
|
128
|
-
async frame(bySelector) {
|
|
129
|
-
const locator = this.locate(bySelector);
|
|
130
|
-
return new models_1.WebdriverIOFrame(this.browser, locator);
|
|
131
|
-
}
|
|
132
128
|
async modalDialog() {
|
|
133
129
|
return new models_1.WebdriverIOModalDialog(this.browser);
|
|
134
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowseTheWebWithWebdriverIO.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWebWithWebdriverIO.ts"],"names":[],"mappings":";;;AAAA,4CAAyD;AACzD,
|
|
1
|
+
{"version":3,"file":"BrowseTheWebWithWebdriverIO.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWebWithWebdriverIO.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { Page } from '@serenity-js/web';
|
|
2
|
+
import { Page, SwitchableOrigin } from '@serenity-js/web';
|
|
3
3
|
import { URL } from 'url';
|
|
4
4
|
import * as wdio from 'webdriverio';
|
|
5
5
|
export declare class WebdriverIOPage extends Page {
|
|
@@ -19,8 +19,6 @@ export declare class WebdriverIOPage extends Page {
|
|
|
19
19
|
close(): Promise<void>;
|
|
20
20
|
closeOthers(): Promise<void>;
|
|
21
21
|
isPresent(): Promise<boolean>;
|
|
22
|
-
switchTo(): Promise<
|
|
23
|
-
switchBack(): Promise<void>;
|
|
24
|
-
}>;
|
|
22
|
+
switchTo(): Promise<SwitchableOrigin>;
|
|
25
23
|
private switchToAndPerform;
|
|
26
24
|
}
|
|
@@ -45,14 +45,14 @@ class WebdriverIOPage extends web_1.Page {
|
|
|
45
45
|
let desiredWindowSize = size;
|
|
46
46
|
if (!browser.isDevTools) {
|
|
47
47
|
desiredWindowSize = await browser.execute(`
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
48
|
+
var currentViewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)
|
|
49
|
+
var currentViewportHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0)
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
width: Math.max(window.outerWidth - currentViewportWidth + ${size.width}, ${size.width}),
|
|
53
|
+
height: Math.max(window.outerHeight - currentViewportHeight + ${size.height}, ${size.height}),
|
|
54
|
+
};
|
|
55
|
+
`);
|
|
56
56
|
}
|
|
57
57
|
return browser.setWindowSize(desiredWindowSize.width, desiredWindowSize.height);
|
|
58
58
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebdriverIOPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPage.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"WebdriverIOPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PageElement } from '@serenity-js/web';
|
|
1
|
+
import { PageElement, SwitchableOrigin } from '@serenity-js/web';
|
|
2
2
|
import * as wdio from 'webdriverio';
|
|
3
3
|
export declare class WebdriverIOPageElement extends PageElement<wdio.Element<'async'>> {
|
|
4
4
|
of(parent: WebdriverIOPageElement): WebdriverIOPageElement;
|
|
@@ -12,6 +12,7 @@ export declare class WebdriverIOPageElement extends PageElement<wdio.Element<'as
|
|
|
12
12
|
attribute(name: string): Promise<string>;
|
|
13
13
|
text(): Promise<string>;
|
|
14
14
|
value(): Promise<string>;
|
|
15
|
+
switchTo(): Promise<SwitchableOrigin>;
|
|
15
16
|
isActive(): Promise<boolean>;
|
|
16
17
|
isClickable(): Promise<boolean>;
|
|
17
18
|
isEnabled(): Promise<boolean>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WebdriverIOPageElement = void 0;
|
|
4
|
+
const core_1 = require("@serenity-js/core");
|
|
4
5
|
const web_1 = require("@serenity-js/web");
|
|
5
6
|
class WebdriverIOPageElement extends web_1.PageElement {
|
|
6
7
|
of(parent) {
|
|
@@ -46,6 +47,47 @@ class WebdriverIOPageElement extends web_1.PageElement {
|
|
|
46
47
|
const element = await this.nativeElement();
|
|
47
48
|
return element.getValue();
|
|
48
49
|
}
|
|
50
|
+
async switchTo() {
|
|
51
|
+
try {
|
|
52
|
+
const element = await this.locator.nativeElement();
|
|
53
|
+
if (element.error) {
|
|
54
|
+
throw element.error;
|
|
55
|
+
}
|
|
56
|
+
const tagName = await element.getTagName();
|
|
57
|
+
const browser = await this.browserFor(element);
|
|
58
|
+
if (['iframe', 'frame'].includes(tagName)) {
|
|
59
|
+
// switchToFrame
|
|
60
|
+
await browser.switchToFrame(element);
|
|
61
|
+
return {
|
|
62
|
+
switchBack: async () => {
|
|
63
|
+
await browser.switchToParentFrame();
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// focus on element
|
|
69
|
+
const previouslyFocusedElement = await browser.execute(
|
|
70
|
+
/* istanbul ignore next */
|
|
71
|
+
function focusOn(element) {
|
|
72
|
+
const currentlyFocusedElement = document.activeElement;
|
|
73
|
+
element.focus();
|
|
74
|
+
return currentlyFocusedElement;
|
|
75
|
+
}, element);
|
|
76
|
+
return {
|
|
77
|
+
switchBack: async () => {
|
|
78
|
+
await browser.execute(
|
|
79
|
+
/* istanbul ignore next */
|
|
80
|
+
function focusOn(element) {
|
|
81
|
+
element.focus();
|
|
82
|
+
}, previouslyFocusedElement);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
throw new core_1.LogicError(`Couldn't switch to page element located ${this.locator}`, error);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
49
91
|
async isActive() {
|
|
50
92
|
const element = await this.nativeElement();
|
|
51
93
|
return element.isFocused();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebdriverIOPageElement.js","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPageElement.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"WebdriverIOPageElement.js","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPageElement.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./WebdriverIOCookie"), exports);
|
|
14
|
-
__exportStar(require("./WebdriverIOFrame"), exports);
|
|
15
14
|
__exportStar(require("./WebdriverIOModalDialog"), exports);
|
|
16
15
|
__exportStar(require("./WebdriverIOPage"), exports);
|
|
17
16
|
__exportStar(require("./WebdriverIOPageElement"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sDAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sDAAoC;AACpC,2DAAyC;AACzC,oDAAkC;AAClC,2DAAyC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serenity-js/webdriverio",
|
|
3
|
-
"version": "3.0.0-rc.
|
|
3
|
+
"version": "3.0.0-rc.13",
|
|
4
4
|
"description": "Serenity/JS reporter and Screenplay Pattern library for WebdriverIO",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jan Molak",
|
|
@@ -33,13 +33,14 @@
|
|
|
33
33
|
"clean": "rimraf .nyc_output lib target",
|
|
34
34
|
"lint": "eslint --ext ts --config ../../.eslintrc.yml .",
|
|
35
35
|
"lint:fix": "npm run lint -- --fix",
|
|
36
|
-
"test": "nyc
|
|
36
|
+
"test": "nyc mocha --config ../../.mocharc.yml 'spec/adapter/**/*.spec.*'",
|
|
37
37
|
"compile": "tsc --project tsconfig.json",
|
|
38
38
|
"site": "esdoc -c .esdoc.js"
|
|
39
39
|
},
|
|
40
40
|
"repository": {
|
|
41
41
|
"type": "git",
|
|
42
|
-
"url": "https://github.com/serenity-js/serenity-js.git"
|
|
42
|
+
"url": "https://github.com/serenity-js/serenity-js.git",
|
|
43
|
+
"directory": "packages/webdriverio"
|
|
43
44
|
},
|
|
44
45
|
"bugs": {
|
|
45
46
|
"url": "https://github.com/serenity-js/serenity-js/issues"
|
|
@@ -49,8 +50,8 @@
|
|
|
49
50
|
"npm": "^6 || ^7 || ^8"
|
|
50
51
|
},
|
|
51
52
|
"dependencies": {
|
|
52
|
-
"@serenity-js/core": "3.0.0-rc.
|
|
53
|
-
"@serenity-js/web": "3.0.0-rc.
|
|
53
|
+
"@serenity-js/core": "3.0.0-rc.13",
|
|
54
|
+
"@serenity-js/web": "3.0.0-rc.13",
|
|
54
55
|
"@wdio/reporter": "^7.16.14",
|
|
55
56
|
"@wdio/types": "^7.16.14",
|
|
56
57
|
"deepmerge": "^4.2.2",
|
|
@@ -92,25 +93,5 @@
|
|
|
92
93
|
"start-server-and-test": "^1.14.0",
|
|
93
94
|
"webdriverio": "^7.16.16"
|
|
94
95
|
},
|
|
95
|
-
"
|
|
96
|
-
"include": [
|
|
97
|
-
"src/**/*.ts"
|
|
98
|
-
],
|
|
99
|
-
"exclude": [
|
|
100
|
-
"src/**/*.d.ts",
|
|
101
|
-
"lib",
|
|
102
|
-
"node_modules",
|
|
103
|
-
"spec"
|
|
104
|
-
],
|
|
105
|
-
"extension": [
|
|
106
|
-
".ts"
|
|
107
|
-
],
|
|
108
|
-
"require": [],
|
|
109
|
-
"reporter": [
|
|
110
|
-
"json"
|
|
111
|
-
],
|
|
112
|
-
"cache": true,
|
|
113
|
-
"all": false
|
|
114
|
-
},
|
|
115
|
-
"gitHead": "5bb8519ef9a91180860675384cfb99ad793a4263"
|
|
96
|
+
"gitHead": "9fb7df72c7f33cb10504843db890f7855b8c355a"
|
|
116
97
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Duration, LogicError } from '@serenity-js/core';
|
|
2
|
-
import { BrowserCapabilities, BrowseTheWeb, ByCss, ByCssContainingText, ById, ByTagName, ByXPath, Cookie, CookieData,
|
|
2
|
+
import { BrowserCapabilities, BrowseTheWeb, ByCss, ByCssContainingText, ById, ByTagName, ByXPath, Cookie, CookieData, Key, ModalDialog, Page } from '@serenity-js/web';
|
|
3
3
|
import type * as wdio from 'webdriverio';
|
|
4
4
|
|
|
5
|
-
import { WebdriverIOCookie,
|
|
5
|
+
import { WebdriverIOCookie, WebdriverIOModalDialog, WebdriverIOPage, WebdriverIOPageElement } from '../models';
|
|
6
6
|
import { WebdriverIOLocator, WebdriverIONativeElementRoot } from '../models/locators';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -147,11 +147,6 @@ export class BrowseTheWebWithWebdriverIO extends BrowseTheWeb<wdio.Element<'asyn
|
|
|
147
147
|
return windowHandles.map(windowHandle => new WebdriverIOPage(this.browser, windowHandle));
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
async frame(bySelector: Selector): Promise<Frame<any>> {
|
|
151
|
-
const locator = this.locate(bySelector);
|
|
152
|
-
return new WebdriverIOFrame(this.browser, locator);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
150
|
async modalDialog(): Promise<ModalDialog> {
|
|
156
151
|
return new WebdriverIOModalDialog(this.browser);
|
|
157
152
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Page } from '@serenity-js/web';
|
|
1
|
+
import { Page, SwitchableOrigin } from '@serenity-js/web';
|
|
2
2
|
import { URL } from 'url';
|
|
3
3
|
import * as wdio from 'webdriverio';
|
|
4
4
|
|
|
@@ -54,14 +54,14 @@ export class WebdriverIOPage extends Page {
|
|
|
54
54
|
|
|
55
55
|
if (! browser.isDevTools) {
|
|
56
56
|
desiredWindowSize = await browser.execute(`
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
var currentViewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)
|
|
58
|
+
var currentViewportHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0)
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
width: Math.max(window.outerWidth - currentViewportWidth + ${ size.width }, ${ size.width }),
|
|
62
|
+
height: Math.max(window.outerHeight - currentViewportHeight + ${ size.height }, ${ size.height }),
|
|
63
|
+
};
|
|
64
|
+
`);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
return browser.setWindowSize(desiredWindowSize.width, desiredWindowSize.height);
|
|
@@ -96,7 +96,7 @@ export class WebdriverIOPage extends Page {
|
|
|
96
96
|
return isOpen;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
async switchTo(): Promise<
|
|
99
|
+
async switchTo(): Promise<SwitchableOrigin> {
|
|
100
100
|
const originalWindowHandle = await this.browser.getWindowHandle();
|
|
101
101
|
|
|
102
102
|
await this.browser.switchToWindow(this.handle);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LogicError } from '@serenity-js/core';
|
|
2
|
+
import { PageElement, SwitchableOrigin } from '@serenity-js/web';
|
|
2
3
|
import * as wdio from 'webdriverio';
|
|
3
4
|
|
|
4
5
|
export class WebdriverIOPageElement
|
|
@@ -58,6 +59,58 @@ export class WebdriverIOPageElement
|
|
|
58
59
|
return element.getValue();
|
|
59
60
|
}
|
|
60
61
|
|
|
62
|
+
async switchTo(): Promise<SwitchableOrigin> {
|
|
63
|
+
try {
|
|
64
|
+
const element: wdio.Element<'async'> = await this.locator.nativeElement()
|
|
65
|
+
|
|
66
|
+
if (element.error) {
|
|
67
|
+
throw element.error;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const tagName = await element.getTagName();
|
|
71
|
+
|
|
72
|
+
const browser = await this.browserFor(element);
|
|
73
|
+
|
|
74
|
+
if ([ 'iframe', 'frame' ].includes(tagName)) {
|
|
75
|
+
// switchToFrame
|
|
76
|
+
await browser.switchToFrame(element);
|
|
77
|
+
|
|
78
|
+
return {
|
|
79
|
+
switchBack: async (): Promise<void> => {
|
|
80
|
+
await browser.switchToParentFrame();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// focus on element
|
|
86
|
+
const previouslyFocusedElement = await browser.execute(
|
|
87
|
+
/* istanbul ignore next */
|
|
88
|
+
function focusOn(element: any) {
|
|
89
|
+
const currentlyFocusedElement = document.activeElement;
|
|
90
|
+
element.focus();
|
|
91
|
+
return currentlyFocusedElement;
|
|
92
|
+
},
|
|
93
|
+
element
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
return {
|
|
97
|
+
switchBack: async (): Promise<void> => {
|
|
98
|
+
await browser.execute(
|
|
99
|
+
/* istanbul ignore next */
|
|
100
|
+
function focusOn(element: any) {
|
|
101
|
+
element.focus();
|
|
102
|
+
},
|
|
103
|
+
previouslyFocusedElement
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch(error) {
|
|
110
|
+
throw new LogicError(`Couldn't switch to page element located ${ this.locator }`, error);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
61
114
|
async isActive(): Promise<boolean> {
|
|
62
115
|
const element = await this.nativeElement();
|
|
63
116
|
return element.isFocused();
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Frame, Locator } from '@serenity-js/web';
|
|
2
|
-
import * as wdio from 'webdriverio';
|
|
3
|
-
export declare class WebdriverIOFrame extends Frame<wdio.Element<'async'>> {
|
|
4
|
-
private readonly browser;
|
|
5
|
-
constructor(browser: wdio.Browser<'async'>, locator: Locator<wdio.Element<'async'>>);
|
|
6
|
-
isPresent(): Promise<boolean>;
|
|
7
|
-
switchTo(): Promise<{
|
|
8
|
-
switchBack(): Promise<void>;
|
|
9
|
-
}>;
|
|
10
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WebdriverIOFrame = void 0;
|
|
4
|
-
const core_1 = require("@serenity-js/core");
|
|
5
|
-
const web_1 = require("@serenity-js/web");
|
|
6
|
-
class WebdriverIOFrame extends web_1.Frame {
|
|
7
|
-
constructor(browser, locator) {
|
|
8
|
-
super(locator);
|
|
9
|
-
this.browser = browser;
|
|
10
|
-
}
|
|
11
|
-
async isPresent() {
|
|
12
|
-
const element = await this.locator.nativeElement();
|
|
13
|
-
return element.isExisting();
|
|
14
|
-
}
|
|
15
|
-
async switchTo() {
|
|
16
|
-
const element = await this.locator.nativeElement();
|
|
17
|
-
if (element.error) {
|
|
18
|
-
throw new core_1.LogicError(`Couldn't locate frame ${this.locator}`, element.error);
|
|
19
|
-
}
|
|
20
|
-
try {
|
|
21
|
-
await this.browser.switchToFrame(element);
|
|
22
|
-
return {
|
|
23
|
-
switchBack: async () => {
|
|
24
|
-
await this.browser.switchToParentFrame();
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
throw new core_1.LogicError(`Couldn't switch to a frame located ${this.locator}`, error);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
exports.WebdriverIOFrame = WebdriverIOFrame;
|
|
34
|
-
//# sourceMappingURL=WebdriverIOFrame.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WebdriverIOFrame.js","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOFrame.ts"],"names":[],"mappings":";;;AAAA,4CAA+C;AAC/C,0CAAkD;AAGlD,MAAa,gBAAiB,SAAQ,WAA4B;IAC9D,YACqB,OAA8B,EAC/C,OAAuC;QAEvC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHE,YAAO,GAAP,OAAO,CAAuB;IAInD,CAAC;IAED,KAAK,CAAC,SAAS;QACX,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QACnD,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,MAAM,OAAO,GAA0B,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAA;QAEzE,IAAI,OAAO,CAAC,KAAK,EAAE;YACf,MAAM,IAAI,iBAAU,CAAC,yBAA0B,IAAI,CAAC,OAAQ,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;SAClF;QAED,IAAI;YACA,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAE1C,OAAO;gBACH,UAAU,EAAE,KAAK,IAAmB,EAAE;oBAClC,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;gBAC7C,CAAC;aACJ,CAAA;SACJ;QACD,OAAO,KAAK,EAAE;YACV,MAAM,IAAI,iBAAU,CAAC,sCAAuC,IAAI,CAAC,OAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;SACvF;IACL,CAAC;CACJ;AAjCD,4CAiCC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { LogicError } from '@serenity-js/core';
|
|
2
|
-
import { Frame, Locator } from '@serenity-js/web';
|
|
3
|
-
import * as wdio from 'webdriverio';
|
|
4
|
-
|
|
5
|
-
export class WebdriverIOFrame extends Frame<wdio.Element<'async'>> {
|
|
6
|
-
constructor(
|
|
7
|
-
private readonly browser: wdio.Browser<'async'>,
|
|
8
|
-
locator: Locator<wdio.Element<'async'>>
|
|
9
|
-
) {
|
|
10
|
-
super(locator);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
async isPresent(): Promise<boolean> {
|
|
14
|
-
const element = await this.locator.nativeElement();
|
|
15
|
-
return element.isExisting();
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
async switchTo(): Promise<{ switchBack(): Promise<void> }> {
|
|
19
|
-
const element: wdio.Element<'async'> = await this.locator.nativeElement()
|
|
20
|
-
|
|
21
|
-
if (element.error) {
|
|
22
|
-
throw new LogicError(`Couldn't locate frame ${ this.locator }`, element.error);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
try {
|
|
26
|
-
await this.browser.switchToFrame(element);
|
|
27
|
-
|
|
28
|
-
return {
|
|
29
|
-
switchBack: async (): Promise<void> => {
|
|
30
|
-
await this.browser.switchToParentFrame();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
throw new LogicError(`Couldn't switch to a frame located ${ this.locator }`, error);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|