@thisisagile/easy-playwright 19.1.4 → 20.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/PlaywrightElement.d.ts +13 -10
- package/dist/PlaywrightElement.js +27 -0
- package/dist/PlaywrightElement.js.map +1 -0
- package/dist/PlaywrightTester.d.ts +25 -22
- package/dist/PlaywrightTester.js +85 -0
- package/dist/PlaywrightTester.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -133
- package/package.json +12 -10
- package/dist/PlaywrightElement.mjs +0 -7
- package/dist/PlaywrightElement.mjs.map +0 -1
- package/dist/PlaywrightTester.mjs +0 -8
- package/dist/PlaywrightTester.mjs.map +0 -1
- package/dist/chunk-SC2GOSH7.mjs +0 -27
- package/dist/chunk-SC2GOSH7.mjs.map +0 -1
- package/dist/chunk-SQMS2LVH.mjs +0 -86
- package/dist/chunk-SQMS2LVH.mjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -11
- package/dist/index.mjs.map +0 -1
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { Json } from "@thisisagile/easy";
|
|
2
|
+
import { ElementHandle } from "playwright";
|
|
3
|
+
import { TestElement } from "@thisisagile/easy-test-web";
|
|
4
|
+
//#region src/PlaywrightElement.d.ts
|
|
4
5
|
export declare class PlaywrightElement implements TestElement {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
private readonly handle;
|
|
7
|
+
constructor(handle: Promise<ElementHandle | null>);
|
|
8
|
+
click(): Promise<void>;
|
|
9
|
+
type(text: string): Promise<void>;
|
|
10
|
+
press(key: string): Promise<void>;
|
|
11
|
+
property(property: string): Promise<Json | undefined>;
|
|
12
|
+
exists(): Promise<boolean>;
|
|
12
13
|
}
|
|
14
|
+
//#endregion
|
|
15
|
+
//# sourceMappingURL=PlaywrightElement.d.ts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { isNotEmpty } from "@thisisagile/easy";
|
|
2
|
+
//#region src/PlaywrightElement.ts
|
|
3
|
+
var PlaywrightElement = class {
|
|
4
|
+
handle;
|
|
5
|
+
constructor(handle) {
|
|
6
|
+
this.handle = handle;
|
|
7
|
+
}
|
|
8
|
+
click() {
|
|
9
|
+
return this.handle.then((h) => h?.click());
|
|
10
|
+
}
|
|
11
|
+
type(text) {
|
|
12
|
+
return this.handle.then((h) => h?.type(text));
|
|
13
|
+
}
|
|
14
|
+
press(key) {
|
|
15
|
+
return this.handle.then((h) => h?.press(key));
|
|
16
|
+
}
|
|
17
|
+
property(property) {
|
|
18
|
+
return this.handle.then((h) => h?.getProperty(property).then((p) => p.jsonValue()));
|
|
19
|
+
}
|
|
20
|
+
exists() {
|
|
21
|
+
return this.handle.then((h) => isNotEmpty(h));
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
//#endregion
|
|
25
|
+
export { PlaywrightElement };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=PlaywrightElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaywrightElement.js","names":[],"sources":["../src/PlaywrightElement.ts"],"sourcesContent":["import { ElementHandle } from 'playwright';\nimport { TestElement } from '@thisisagile/easy-test-web';\nimport { isNotEmpty, Json } from '@thisisagile/easy';\n\nexport class PlaywrightElement implements TestElement {\n constructor(private readonly handle: Promise<ElementHandle | null>) {}\n\n click(): Promise<void> {\n return this.handle.then(h => h?.click());\n }\n\n type(text: string): Promise<void> {\n return this.handle.then(h => h?.type(text));\n }\n\n press(key: string): Promise<void> {\n return this.handle.then(h => h?.press(key));\n }\n\n property(property: string): Promise<Json | undefined> {\n return this.handle.then(h => h?.getProperty(property).then(p => p.jsonValue()));\n }\n\n exists(): Promise<boolean> {\n return this.handle.then(h => isNotEmpty(h));\n }\n}\n"],"mappings":";;AAIA,IAAa,oBAAb,MAAsD;CACvB;CAA7B,YAAY,QAAwD;EAAvC,KAAA,SAAA;CAAwC;CAErE,QAAuB;EACrB,OAAO,KAAK,OAAO,MAAK,MAAK,GAAG,MAAM,CAAC;CACzC;CAEA,KAAK,MAA6B;EAChC,OAAO,KAAK,OAAO,MAAK,MAAK,GAAG,KAAK,IAAI,CAAC;CAC5C;CAEA,MAAM,KAA4B;EAChC,OAAO,KAAK,OAAO,MAAK,MAAK,GAAG,MAAM,GAAG,CAAC;CAC5C;CAEA,SAAS,UAA6C;EACpD,OAAO,KAAK,OAAO,MAAK,MAAK,GAAG,YAAY,QAAQ,CAAC,CAAC,MAAK,MAAK,EAAE,UAAU,CAAC,CAAC;CAChF;CAEA,SAA2B;EACzB,OAAO,KAAK,OAAO,MAAK,MAAK,WAAW,CAAC,CAAC;CAC5C;AACF"}
|
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { TestElement, Tester } from
|
|
1
|
+
import { Id, Json, UseCase } from "@thisisagile/easy";
|
|
2
|
+
import { Browser, Page } from "playwright";
|
|
3
|
+
import { TestElement, Tester } from "@thisisagile/easy-test-web";
|
|
4
|
+
//#region src/PlaywrightTester.d.ts
|
|
4
5
|
export type BrowserType = 'Chromium' | 'Webkit' | 'Firefox';
|
|
5
6
|
export declare class PlaywrightTester implements Tester {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
7
|
+
host: string;
|
|
8
|
+
private readonly browser;
|
|
9
|
+
private readonly page;
|
|
10
|
+
constructor(host: string, browser: Browser, page: Page);
|
|
11
|
+
get url(): string;
|
|
12
|
+
static launch: (browserType: BrowserType, headless: boolean, launchProps: Json) => Promise<Browser>;
|
|
13
|
+
static init(browserType: BrowserType, host?: string, headless?: boolean, width?: number, height?: number, launchProps?: {}): Promise<Tester>;
|
|
14
|
+
byClass(c: string): TestElement;
|
|
15
|
+
byId(id: string): TestElement;
|
|
16
|
+
byDataTestId(id: string): TestElement;
|
|
17
|
+
byName(name: string): TestElement;
|
|
18
|
+
by(key: string, value: string): TestElement;
|
|
19
|
+
submit(): TestElement;
|
|
20
|
+
row(contains: string): TestElement;
|
|
21
|
+
redirect(url: string): Promise<boolean>;
|
|
22
|
+
goto(to: UseCase, id?: Id): Promise<boolean>;
|
|
23
|
+
wait(): Promise<boolean>;
|
|
24
|
+
close(): Promise<void>;
|
|
25
|
+
private byXPath;
|
|
25
26
|
}
|
|
27
|
+
//#endregion
|
|
28
|
+
//# sourceMappingURL=PlaywrightTester.d.ts.map
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { PlaywrightElement } from "./PlaywrightElement.js";
|
|
2
|
+
import { ctx } from "@thisisagile/easy";
|
|
3
|
+
import { chromium, firefox, webkit } from "playwright";
|
|
4
|
+
import { toUrl } from "@thisisagile/easy-test-web";
|
|
5
|
+
//#region src/PlaywrightTester.ts
|
|
6
|
+
var PlaywrightTester = class PlaywrightTester {
|
|
7
|
+
host;
|
|
8
|
+
browser;
|
|
9
|
+
page;
|
|
10
|
+
constructor(host, browser, page) {
|
|
11
|
+
this.host = host;
|
|
12
|
+
this.browser = browser;
|
|
13
|
+
this.page = page;
|
|
14
|
+
}
|
|
15
|
+
get url() {
|
|
16
|
+
return this.page.url();
|
|
17
|
+
}
|
|
18
|
+
/* istanbul ignore next */
|
|
19
|
+
static launch = (browserType, headless, launchProps) => {
|
|
20
|
+
const options = {
|
|
21
|
+
headless,
|
|
22
|
+
args: ["--no-sandbox", "--start-maximized"],
|
|
23
|
+
...launchProps
|
|
24
|
+
};
|
|
25
|
+
switch (browserType) {
|
|
26
|
+
case "Firefox": return firefox.launch(options);
|
|
27
|
+
case "Webkit": return webkit.launch(options);
|
|
28
|
+
default: return chromium.launch(options);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
/* istanbul ignore next */
|
|
32
|
+
static async init(browserType, host = ctx.env.get("webHost", ""), headless = true, width = 1200, height = 800, launchProps = {}) {
|
|
33
|
+
const browser = await PlaywrightTester.launch(browserType, headless, launchProps);
|
|
34
|
+
const page = await browser.newPage();
|
|
35
|
+
await page.setViewportSize({
|
|
36
|
+
width,
|
|
37
|
+
height
|
|
38
|
+
});
|
|
39
|
+
return new PlaywrightTester(host, browser, page);
|
|
40
|
+
}
|
|
41
|
+
byClass(c) {
|
|
42
|
+
const h = this.page.waitForSelector(`.${c}`);
|
|
43
|
+
return new PlaywrightElement(h);
|
|
44
|
+
}
|
|
45
|
+
byId(id) {
|
|
46
|
+
const h = this.page.waitForSelector(`#${id}`);
|
|
47
|
+
return new PlaywrightElement(h);
|
|
48
|
+
}
|
|
49
|
+
byDataTestId(id) {
|
|
50
|
+
return this.by("data-testid", id);
|
|
51
|
+
}
|
|
52
|
+
byName(name) {
|
|
53
|
+
return this.by("name", name);
|
|
54
|
+
}
|
|
55
|
+
by(key, value) {
|
|
56
|
+
const h = this.page.waitForSelector(`[${key}=${value}]`);
|
|
57
|
+
return new PlaywrightElement(h);
|
|
58
|
+
}
|
|
59
|
+
submit() {
|
|
60
|
+
return this.by("type", "submit");
|
|
61
|
+
}
|
|
62
|
+
row(contains) {
|
|
63
|
+
return this.byXPath(`(//tr[contains(., '${contains}')])[1]`);
|
|
64
|
+
}
|
|
65
|
+
redirect(url) {
|
|
66
|
+
return this.page.goto(url).then((r) => r?.ok() ?? false);
|
|
67
|
+
}
|
|
68
|
+
goto(to, id) {
|
|
69
|
+
return this.redirect(toUrl(to, this.host, id));
|
|
70
|
+
}
|
|
71
|
+
wait() {
|
|
72
|
+
return this.page.waitForNavigation().then((r) => r?.ok() || false);
|
|
73
|
+
}
|
|
74
|
+
close() {
|
|
75
|
+
return this.browser.close();
|
|
76
|
+
}
|
|
77
|
+
byXPath(q) {
|
|
78
|
+
const h = this.page.waitForSelector(`${q}`);
|
|
79
|
+
return new PlaywrightElement(h);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
//#endregion
|
|
83
|
+
export { PlaywrightTester };
|
|
84
|
+
|
|
85
|
+
//# sourceMappingURL=PlaywrightTester.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaywrightTester.js","names":[],"sources":["../src/PlaywrightTester.ts"],"sourcesContent":["import playwright, { Browser, chromium, firefox, Page, webkit } from 'playwright';\nimport { PlaywrightElement } from './PlaywrightElement';\nimport { ctx, Id, Json, UseCase } from '@thisisagile/easy';\nimport { TestElement, Tester, toUrl } from '@thisisagile/easy-test-web';\n\nexport type BrowserType = 'Chromium' | 'Webkit' | 'Firefox';\n\nexport class PlaywrightTester implements Tester {\n constructor(public host: string, private readonly browser: Browser, private readonly page: Page) {}\n\n get url(): string {\n return this.page.url();\n }\n\n /* istanbul ignore next */\n static launch = (browserType: BrowserType, headless: boolean, launchProps: Json): Promise<Browser> => {\n const options: playwright.LaunchOptions = {\n headless: headless,\n args: ['--no-sandbox', '--start-maximized'],\n ...launchProps,\n };\n switch (browserType) {\n case 'Firefox':\n return firefox.launch(options);\n case 'Webkit':\n return webkit.launch(options);\n default:\n return chromium.launch(options);\n }\n };\n\n /* istanbul ignore next */\n static async init(\n browserType: BrowserType,\n host: string = ctx.env.get('webHost', '') as string,\n headless = true,\n width = 1200,\n height = 800,\n launchProps = {}\n ): Promise<Tester> {\n const browser = await PlaywrightTester.launch(browserType, headless, launchProps);\n const page = await browser.newPage();\n await page.setViewportSize({ width, height });\n return new PlaywrightTester(host, browser, page);\n }\n\n byClass(c: string): TestElement {\n const h = this.page.waitForSelector(`.${c}`);\n return new PlaywrightElement(h);\n }\n\n byId(id: string): TestElement {\n const h = this.page.waitForSelector(`#${id}`);\n return new PlaywrightElement(h);\n }\n\n byDataTestId(id: string): TestElement {\n return this.by('data-testid', id);\n }\n\n byName(name: string): TestElement {\n return this.by('name', name);\n }\n\n by(key: string, value: string): TestElement {\n const h = this.page.waitForSelector(`[${key}=${value}]`);\n return new PlaywrightElement(h);\n }\n\n submit(): TestElement {\n return this.by('type', 'submit');\n }\n\n row(contains: string): TestElement {\n // Select the first row that contains the given input\n return this.byXPath(`(//tr[contains(., '${contains}')])[1]`);\n }\n\n redirect(url: string): Promise<boolean> {\n return this.page.goto(url).then(r => r?.ok() ?? false);\n }\n\n goto(to: UseCase, id?: Id): Promise<boolean> {\n return this.redirect(toUrl(to, this.host, id));\n }\n\n wait(): Promise<boolean> {\n return this.page.waitForNavigation().then(r => r?.ok() || false);\n }\n\n close(): Promise<void> {\n return this.browser.close();\n }\n\n private byXPath(q: string): TestElement {\n const h = this.page.waitForSelector(`${q}`);\n return new PlaywrightElement(h);\n }\n}\n"],"mappings":";;;;;AAOA,IAAa,mBAAb,MAAa,iBAAmC;CAC3B;CAA+B;CAAmC;CAArF,YAAY,MAAqB,SAAmC,MAA6B;EAA9E,KAAA,OAAA;EAA+B,KAAA,UAAA;EAAmC,KAAA,OAAA;CAAa;CAElG,IAAI,MAAc;EAChB,OAAO,KAAK,KAAK,IAAI;CACvB;;CAGA,OAAO,UAAU,aAA0B,UAAmB,gBAAwC;EACpG,MAAM,UAAoC;GAC9B;GACV,MAAM,CAAC,gBAAgB,mBAAmB;GAC1C,GAAG;EACL;EACA,QAAQ,aAAR;GACE,KAAK,WACH,OAAO,QAAQ,OAAO,OAAO;GAC/B,KAAK,UACH,OAAO,OAAO,OAAO,OAAO;GAC9B,SACE,OAAO,SAAS,OAAO,OAAO;EAClC;CACF;;CAGA,aAAa,KACX,aACA,OAAe,IAAI,IAAI,IAAI,WAAW,EAAE,GACxC,WAAW,MACX,QAAQ,MACR,SAAS,KACT,cAAc,CAAC,GACE;EACjB,MAAM,UAAU,MAAM,iBAAiB,OAAO,aAAa,UAAU,WAAW;EAChF,MAAM,OAAO,MAAM,QAAQ,QAAQ;EACnC,MAAM,KAAK,gBAAgB;GAAE;GAAO;EAAO,CAAC;EAC5C,OAAO,IAAI,iBAAiB,MAAM,SAAS,IAAI;CACjD;CAEA,QAAQ,GAAwB;EAC9B,MAAM,IAAI,KAAK,KAAK,gBAAgB,IAAI,GAAG;EAC3C,OAAO,IAAI,kBAAkB,CAAC;CAChC;CAEA,KAAK,IAAyB;EAC5B,MAAM,IAAI,KAAK,KAAK,gBAAgB,IAAI,IAAI;EAC5C,OAAO,IAAI,kBAAkB,CAAC;CAChC;CAEA,aAAa,IAAyB;EACpC,OAAO,KAAK,GAAG,eAAe,EAAE;CAClC;CAEA,OAAO,MAA2B;EAChC,OAAO,KAAK,GAAG,QAAQ,IAAI;CAC7B;CAEA,GAAG,KAAa,OAA4B;EAC1C,MAAM,IAAI,KAAK,KAAK,gBAAgB,IAAI,IAAI,GAAG,MAAM,EAAE;EACvD,OAAO,IAAI,kBAAkB,CAAC;CAChC;CAEA,SAAsB;EACpB,OAAO,KAAK,GAAG,QAAQ,QAAQ;CACjC;CAEA,IAAI,UAA+B;EAEjC,OAAO,KAAK,QAAQ,sBAAsB,SAAS,QAAQ;CAC7D;CAEA,SAAS,KAA+B;EACtC,OAAO,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC,MAAK,MAAK,GAAG,GAAG,KAAK,KAAK;CACvD;CAEA,KAAK,IAAa,IAA2B;EAC3C,OAAO,KAAK,SAAS,MAAM,IAAI,KAAK,MAAM,EAAE,CAAC;CAC/C;CAEA,OAAyB;EACvB,OAAO,KAAK,KAAK,kBAAkB,CAAC,CAAC,MAAK,MAAK,GAAG,GAAG,KAAK,KAAK;CACjE;CAEA,QAAuB;EACrB,OAAO,KAAK,QAAQ,MAAM;CAC5B;CAEA,QAAgB,GAAwB;EACtC,MAAM,IAAI,KAAK,KAAK,gBAAgB,GAAG,GAAG;EAC1C,OAAO,IAAI,kBAAkB,CAAC;CAChC;AACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { PlaywrightElement } from "./PlaywrightElement.js";
|
|
2
|
+
import { BrowserType, PlaywrightTester } from "./PlaywrightTester.js";
|
|
3
|
+
export { BrowserType, PlaywrightElement, PlaywrightTester };
|
package/dist/index.js
CHANGED
|
@@ -1,133 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/index.ts
|
|
21
|
-
var src_exports = {};
|
|
22
|
-
__export(src_exports, {
|
|
23
|
-
PlaywrightElement: () => PlaywrightElement,
|
|
24
|
-
PlaywrightTester: () => PlaywrightTester
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(src_exports);
|
|
27
|
-
|
|
28
|
-
// src/PlaywrightElement.ts
|
|
29
|
-
var import_easy = require("@thisisagile/easy");
|
|
30
|
-
var PlaywrightElement = class {
|
|
31
|
-
constructor(handle) {
|
|
32
|
-
this.handle = handle;
|
|
33
|
-
}
|
|
34
|
-
click() {
|
|
35
|
-
return this.handle.then((h) => h?.click());
|
|
36
|
-
}
|
|
37
|
-
type(text) {
|
|
38
|
-
return this.handle.then((h) => h?.type(text));
|
|
39
|
-
}
|
|
40
|
-
press(key) {
|
|
41
|
-
return this.handle.then((h) => h?.press(key));
|
|
42
|
-
}
|
|
43
|
-
property(property) {
|
|
44
|
-
return this.handle.then((h) => h?.getProperty(property).then((p) => p.jsonValue()));
|
|
45
|
-
}
|
|
46
|
-
exists() {
|
|
47
|
-
return this.handle.then((h) => (0, import_easy.isNotEmpty)(h));
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
// src/PlaywrightTester.ts
|
|
52
|
-
var import_playwright = require("playwright");
|
|
53
|
-
var import_easy2 = require("@thisisagile/easy");
|
|
54
|
-
var import_easy_test_web = require("@thisisagile/easy-test-web");
|
|
55
|
-
var PlaywrightTester = class _PlaywrightTester {
|
|
56
|
-
constructor(host, browser, page) {
|
|
57
|
-
this.host = host;
|
|
58
|
-
this.browser = browser;
|
|
59
|
-
this.page = page;
|
|
60
|
-
}
|
|
61
|
-
get url() {
|
|
62
|
-
return this.page.url();
|
|
63
|
-
}
|
|
64
|
-
/* istanbul ignore next */
|
|
65
|
-
static launch = (browserType, headless, launchProps) => {
|
|
66
|
-
const options = {
|
|
67
|
-
headless,
|
|
68
|
-
args: ["--no-sandbox", "--start-maximized"],
|
|
69
|
-
...launchProps
|
|
70
|
-
};
|
|
71
|
-
switch (browserType) {
|
|
72
|
-
case "Firefox":
|
|
73
|
-
return import_playwright.firefox.launch(options);
|
|
74
|
-
case "Webkit":
|
|
75
|
-
return import_playwright.webkit.launch(options);
|
|
76
|
-
default:
|
|
77
|
-
return import_playwright.chromium.launch(options);
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
/* istanbul ignore next */
|
|
81
|
-
static async init(browserType, host = import_easy2.ctx.env.get("webHost", ""), headless = true, width = 1200, height = 800, launchProps = {}) {
|
|
82
|
-
const browser = await _PlaywrightTester.launch(browserType, headless, launchProps);
|
|
83
|
-
const page = await browser.newPage();
|
|
84
|
-
await page.setViewportSize({ width, height });
|
|
85
|
-
return new _PlaywrightTester(host, browser, page);
|
|
86
|
-
}
|
|
87
|
-
byClass(c) {
|
|
88
|
-
const h = this.page.waitForSelector(`.${c}`);
|
|
89
|
-
return new PlaywrightElement(h);
|
|
90
|
-
}
|
|
91
|
-
byId(id) {
|
|
92
|
-
const h = this.page.waitForSelector(`#${id}`);
|
|
93
|
-
return new PlaywrightElement(h);
|
|
94
|
-
}
|
|
95
|
-
byDataTestId(id) {
|
|
96
|
-
return this.by("data-testid", id);
|
|
97
|
-
}
|
|
98
|
-
byName(name) {
|
|
99
|
-
return this.by("name", name);
|
|
100
|
-
}
|
|
101
|
-
by(key, value) {
|
|
102
|
-
const h = this.page.waitForSelector(`[${key}=${value}]`);
|
|
103
|
-
return new PlaywrightElement(h);
|
|
104
|
-
}
|
|
105
|
-
submit() {
|
|
106
|
-
return this.by("type", "submit");
|
|
107
|
-
}
|
|
108
|
-
row(contains) {
|
|
109
|
-
return this.byXPath(`(//tr[contains(., '${contains}')])[1]`);
|
|
110
|
-
}
|
|
111
|
-
redirect(url) {
|
|
112
|
-
return this.page.goto(url).then((r) => r?.ok() ?? false);
|
|
113
|
-
}
|
|
114
|
-
goto(to, id) {
|
|
115
|
-
return this.redirect((0, import_easy_test_web.toUrl)(to, this.host, id));
|
|
116
|
-
}
|
|
117
|
-
wait() {
|
|
118
|
-
return this.page.waitForNavigation().then((r) => r?.ok() || false);
|
|
119
|
-
}
|
|
120
|
-
close() {
|
|
121
|
-
return this.browser.close();
|
|
122
|
-
}
|
|
123
|
-
byXPath(q) {
|
|
124
|
-
const h = this.page.waitForSelector(`${q}`);
|
|
125
|
-
return new PlaywrightElement(h);
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
129
|
-
0 && (module.exports = {
|
|
130
|
-
PlaywrightElement,
|
|
131
|
-
PlaywrightTester
|
|
132
|
-
});
|
|
133
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import { PlaywrightElement } from "./PlaywrightElement.js";
|
|
2
|
+
import { PlaywrightTester } from "./PlaywrightTester.js";
|
|
3
|
+
export { PlaywrightElement, PlaywrightTester };
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thisisagile/easy-playwright",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "20.0.0",
|
|
4
4
|
"description": "Straightforward wrapper library for Playwright web testing framework",
|
|
5
5
|
"author": "Sander Hoogendoorn",
|
|
6
6
|
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
7
8
|
"main": "dist/index.js",
|
|
8
|
-
"module": "dist/index.
|
|
9
|
+
"module": "dist/index.js",
|
|
9
10
|
"types": "dist/index.d.ts",
|
|
10
11
|
"repository": {
|
|
11
12
|
"type": "git",
|
|
@@ -23,8 +24,7 @@
|
|
|
23
24
|
"scripts": {
|
|
24
25
|
"lint": "yarn g:eslint . --ext .js,.jsx,.ts,.tsx --fix",
|
|
25
26
|
"format": "yarn g:prettier --check --write src test *.json",
|
|
26
|
-
"build": "yarn
|
|
27
|
-
"build:tsup": "yarn g:tsup && yarn g:tsc --emitDeclarationOnly --declaration",
|
|
27
|
+
"build": "yarn g:tsdown && yarn g:exports",
|
|
28
28
|
"test": "yarn g:jest --coverage",
|
|
29
29
|
"prepack": "yarn g:copy-readme"
|
|
30
30
|
},
|
|
@@ -36,27 +36,29 @@
|
|
|
36
36
|
"publishConfig": {
|
|
37
37
|
"access": "public"
|
|
38
38
|
},
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=20.19.0"
|
|
41
|
+
},
|
|
39
42
|
"devDependencies": {
|
|
40
43
|
"@thisisagile/easy-test": "*"
|
|
41
44
|
},
|
|
42
45
|
"dependencies": {
|
|
43
|
-
"@thisisagile/easy": "^
|
|
44
|
-
"@thisisagile/easy-test-web": "^
|
|
46
|
+
"@thisisagile/easy": "^20.0.0",
|
|
47
|
+
"@thisisagile/easy-test-web": "^20.0.0",
|
|
45
48
|
"playwright": "^1.41.2"
|
|
46
49
|
},
|
|
47
50
|
"exports": {
|
|
48
51
|
".": {
|
|
49
52
|
"types": "./dist/index.d.ts",
|
|
50
|
-
"
|
|
51
|
-
"require": "./dist/index.js"
|
|
53
|
+
"default": "./dist/index.js"
|
|
52
54
|
},
|
|
53
55
|
"./PlaywrightElement": {
|
|
54
56
|
"types": "./dist/PlaywrightElement.d.ts",
|
|
55
|
-
"
|
|
57
|
+
"default": "./dist/PlaywrightElement.js"
|
|
56
58
|
},
|
|
57
59
|
"./PlaywrightTester": {
|
|
58
60
|
"types": "./dist/PlaywrightTester.d.ts",
|
|
59
|
-
"
|
|
61
|
+
"default": "./dist/PlaywrightTester.js"
|
|
60
62
|
},
|
|
61
63
|
"./src/*": "./src/*",
|
|
62
64
|
"./dist/*": "./dist/*",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/chunk-SC2GOSH7.mjs
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
// src/PlaywrightElement.ts
|
|
2
|
-
import { isNotEmpty } from "@thisisagile/easy";
|
|
3
|
-
var PlaywrightElement = class {
|
|
4
|
-
constructor(handle) {
|
|
5
|
-
this.handle = handle;
|
|
6
|
-
}
|
|
7
|
-
click() {
|
|
8
|
-
return this.handle.then((h) => h?.click());
|
|
9
|
-
}
|
|
10
|
-
type(text) {
|
|
11
|
-
return this.handle.then((h) => h?.type(text));
|
|
12
|
-
}
|
|
13
|
-
press(key) {
|
|
14
|
-
return this.handle.then((h) => h?.press(key));
|
|
15
|
-
}
|
|
16
|
-
property(property) {
|
|
17
|
-
return this.handle.then((h) => h?.getProperty(property).then((p) => p.jsonValue()));
|
|
18
|
-
}
|
|
19
|
-
exists() {
|
|
20
|
-
return this.handle.then((h) => isNotEmpty(h));
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export {
|
|
25
|
-
PlaywrightElement
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=chunk-SC2GOSH7.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/PlaywrightElement.ts"],"sourcesContent":["import { ElementHandle } from 'playwright';\nimport { TestElement } from '@thisisagile/easy-test-web';\nimport { isNotEmpty, Json } from '@thisisagile/easy';\n\nexport class PlaywrightElement implements TestElement {\n constructor(private readonly handle: Promise<ElementHandle | null>) {}\n\n click(): Promise<void> {\n return this.handle.then(h => h?.click());\n }\n\n type(text: string): Promise<void> {\n return this.handle.then(h => h?.type(text));\n }\n\n press(key: string): Promise<void> {\n return this.handle.then(h => h?.press(key));\n }\n\n property(property: string): Promise<Json | undefined> {\n return this.handle.then(h => h?.getProperty(property).then(p => p.jsonValue()));\n }\n\n exists(): Promise<boolean> {\n return this.handle.then(h => isNotEmpty(h));\n }\n}\n"],"mappings":";AAEA,SAAS,kBAAwB;AAE1B,IAAM,oBAAN,MAA+C;AAAA,EACpD,YAA6B,QAAuC;AAAvC;AAAA,EAAwC;AAAA,EAErE,QAAuB;AACrB,WAAO,KAAK,OAAO,KAAK,OAAK,GAAG,MAAM,CAAC;AAAA,EACzC;AAAA,EAEA,KAAK,MAA6B;AAChC,WAAO,KAAK,OAAO,KAAK,OAAK,GAAG,KAAK,IAAI,CAAC;AAAA,EAC5C;AAAA,EAEA,MAAM,KAA4B;AAChC,WAAO,KAAK,OAAO,KAAK,OAAK,GAAG,MAAM,GAAG,CAAC;AAAA,EAC5C;AAAA,EAEA,SAAS,UAA6C;AACpD,WAAO,KAAK,OAAO,KAAK,OAAK,GAAG,YAAY,QAAQ,EAAE,KAAK,OAAK,EAAE,UAAU,CAAC,CAAC;AAAA,EAChF;AAAA,EAEA,SAA2B;AACzB,WAAO,KAAK,OAAO,KAAK,OAAK,WAAW,CAAC,CAAC;AAAA,EAC5C;AACF;","names":[]}
|
package/dist/chunk-SQMS2LVH.mjs
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
PlaywrightElement
|
|
3
|
-
} from "./chunk-SC2GOSH7.mjs";
|
|
4
|
-
|
|
5
|
-
// src/PlaywrightTester.ts
|
|
6
|
-
import { chromium, firefox, webkit } from "playwright";
|
|
7
|
-
import { ctx } from "@thisisagile/easy";
|
|
8
|
-
import { toUrl } from "@thisisagile/easy-test-web";
|
|
9
|
-
var PlaywrightTester = class _PlaywrightTester {
|
|
10
|
-
constructor(host, browser, page) {
|
|
11
|
-
this.host = host;
|
|
12
|
-
this.browser = browser;
|
|
13
|
-
this.page = page;
|
|
14
|
-
}
|
|
15
|
-
get url() {
|
|
16
|
-
return this.page.url();
|
|
17
|
-
}
|
|
18
|
-
/* istanbul ignore next */
|
|
19
|
-
static launch = (browserType, headless, launchProps) => {
|
|
20
|
-
const options = {
|
|
21
|
-
headless,
|
|
22
|
-
args: ["--no-sandbox", "--start-maximized"],
|
|
23
|
-
...launchProps
|
|
24
|
-
};
|
|
25
|
-
switch (browserType) {
|
|
26
|
-
case "Firefox":
|
|
27
|
-
return firefox.launch(options);
|
|
28
|
-
case "Webkit":
|
|
29
|
-
return webkit.launch(options);
|
|
30
|
-
default:
|
|
31
|
-
return chromium.launch(options);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
/* istanbul ignore next */
|
|
35
|
-
static async init(browserType, host = ctx.env.get("webHost", ""), headless = true, width = 1200, height = 800, launchProps = {}) {
|
|
36
|
-
const browser = await _PlaywrightTester.launch(browserType, headless, launchProps);
|
|
37
|
-
const page = await browser.newPage();
|
|
38
|
-
await page.setViewportSize({ width, height });
|
|
39
|
-
return new _PlaywrightTester(host, browser, page);
|
|
40
|
-
}
|
|
41
|
-
byClass(c) {
|
|
42
|
-
const h = this.page.waitForSelector(`.${c}`);
|
|
43
|
-
return new PlaywrightElement(h);
|
|
44
|
-
}
|
|
45
|
-
byId(id) {
|
|
46
|
-
const h = this.page.waitForSelector(`#${id}`);
|
|
47
|
-
return new PlaywrightElement(h);
|
|
48
|
-
}
|
|
49
|
-
byDataTestId(id) {
|
|
50
|
-
return this.by("data-testid", id);
|
|
51
|
-
}
|
|
52
|
-
byName(name) {
|
|
53
|
-
return this.by("name", name);
|
|
54
|
-
}
|
|
55
|
-
by(key, value) {
|
|
56
|
-
const h = this.page.waitForSelector(`[${key}=${value}]`);
|
|
57
|
-
return new PlaywrightElement(h);
|
|
58
|
-
}
|
|
59
|
-
submit() {
|
|
60
|
-
return this.by("type", "submit");
|
|
61
|
-
}
|
|
62
|
-
row(contains) {
|
|
63
|
-
return this.byXPath(`(//tr[contains(., '${contains}')])[1]`);
|
|
64
|
-
}
|
|
65
|
-
redirect(url) {
|
|
66
|
-
return this.page.goto(url).then((r) => r?.ok() ?? false);
|
|
67
|
-
}
|
|
68
|
-
goto(to, id) {
|
|
69
|
-
return this.redirect(toUrl(to, this.host, id));
|
|
70
|
-
}
|
|
71
|
-
wait() {
|
|
72
|
-
return this.page.waitForNavigation().then((r) => r?.ok() || false);
|
|
73
|
-
}
|
|
74
|
-
close() {
|
|
75
|
-
return this.browser.close();
|
|
76
|
-
}
|
|
77
|
-
byXPath(q) {
|
|
78
|
-
const h = this.page.waitForSelector(`${q}`);
|
|
79
|
-
return new PlaywrightElement(h);
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
export {
|
|
84
|
-
PlaywrightTester
|
|
85
|
-
};
|
|
86
|
-
//# sourceMappingURL=chunk-SQMS2LVH.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/PlaywrightTester.ts"],"sourcesContent":["import playwright, { Browser, chromium, firefox, Page, webkit } from 'playwright';\nimport { PlaywrightElement } from './PlaywrightElement';\nimport { ctx, Id, Json, UseCase } from '@thisisagile/easy';\nimport { TestElement, Tester, toUrl } from '@thisisagile/easy-test-web';\n\nexport type BrowserType = 'Chromium' | 'Webkit' | 'Firefox';\n\nexport class PlaywrightTester implements Tester {\n constructor(public host: string, private readonly browser: Browser, private readonly page: Page) {}\n\n get url(): string {\n return this.page.url();\n }\n\n /* istanbul ignore next */\n static launch = (browserType: BrowserType, headless: boolean, launchProps: Json): Promise<Browser> => {\n const options: playwright.LaunchOptions = {\n headless: headless,\n args: ['--no-sandbox', '--start-maximized'],\n ...launchProps,\n };\n switch (browserType) {\n case 'Firefox':\n return firefox.launch(options);\n case 'Webkit':\n return webkit.launch(options);\n default:\n return chromium.launch(options);\n }\n };\n\n /* istanbul ignore next */\n static async init(\n browserType: BrowserType,\n host: string = ctx.env.get('webHost', '') as string,\n headless = true,\n width = 1200,\n height = 800,\n launchProps = {}\n ): Promise<Tester> {\n const browser = await PlaywrightTester.launch(browserType, headless, launchProps);\n const page = await browser.newPage();\n await page.setViewportSize({ width, height });\n return new PlaywrightTester(host, browser, page);\n }\n\n byClass(c: string): TestElement {\n const h = this.page.waitForSelector(`.${c}`);\n return new PlaywrightElement(h);\n }\n\n byId(id: string): TestElement {\n const h = this.page.waitForSelector(`#${id}`);\n return new PlaywrightElement(h);\n }\n\n byDataTestId(id: string): TestElement {\n return this.by('data-testid', id);\n }\n\n byName(name: string): TestElement {\n return this.by('name', name);\n }\n\n by(key: string, value: string): TestElement {\n const h = this.page.waitForSelector(`[${key}=${value}]`);\n return new PlaywrightElement(h);\n }\n\n submit(): TestElement {\n return this.by('type', 'submit');\n }\n\n row(contains: string): TestElement {\n // Select the first row that contains the given input\n return this.byXPath(`(//tr[contains(., '${contains}')])[1]`);\n }\n\n redirect(url: string): Promise<boolean> {\n return this.page.goto(url).then(r => r?.ok() ?? false);\n }\n\n goto(to: UseCase, id?: Id): Promise<boolean> {\n return this.redirect(toUrl(to, this.host, id));\n }\n\n wait(): Promise<boolean> {\n return this.page.waitForNavigation().then(r => r?.ok() || false);\n }\n\n close(): Promise<void> {\n return this.browser.close();\n }\n\n private byXPath(q: string): TestElement {\n const h = this.page.waitForSelector(`${q}`);\n return new PlaywrightElement(h);\n }\n}\n"],"mappings":";;;;;AAAA,SAA8B,UAAU,SAAe,cAAc;AAErE,SAAS,WAA8B;AACvC,SAA8B,aAAa;AAIpC,IAAM,mBAAN,MAAM,kBAAmC;AAAA,EAC9C,YAAmB,MAA+B,SAAmC,MAAY;AAA9E;AAA+B;AAAmC;AAAA,EAAa;AAAA,EAElG,IAAI,MAAc;AAChB,WAAO,KAAK,KAAK,IAAI;AAAA,EACvB;AAAA;AAAA,EAGA,OAAO,SAAS,CAAC,aAA0B,UAAmB,gBAAwC;AACpG,UAAM,UAAoC;AAAA,MACxC;AAAA,MACA,MAAM,CAAC,gBAAgB,mBAAmB;AAAA,MAC1C,GAAG;AAAA,IACL;AACA,YAAQ,aAAa;AAAA,MACnB,KAAK;AACH,eAAO,QAAQ,OAAO,OAAO;AAAA,MAC/B,KAAK;AACH,eAAO,OAAO,OAAO,OAAO;AAAA,MAC9B;AACE,eAAO,SAAS,OAAO,OAAO;AAAA,IAClC;AAAA,EACF;AAAA;AAAA,EAGA,aAAa,KACX,aACA,OAAe,IAAI,IAAI,IAAI,WAAW,EAAE,GACxC,WAAW,MACX,QAAQ,MACR,SAAS,KACT,cAAc,CAAC,GACE;AACjB,UAAM,UAAU,MAAM,kBAAiB,OAAO,aAAa,UAAU,WAAW;AAChF,UAAM,OAAO,MAAM,QAAQ,QAAQ;AACnC,UAAM,KAAK,gBAAgB,EAAE,OAAO,OAAO,CAAC;AAC5C,WAAO,IAAI,kBAAiB,MAAM,SAAS,IAAI;AAAA,EACjD;AAAA,EAEA,QAAQ,GAAwB;AAC9B,UAAM,IAAI,KAAK,KAAK,gBAAgB,IAAI,CAAC,EAAE;AAC3C,WAAO,IAAI,kBAAkB,CAAC;AAAA,EAChC;AAAA,EAEA,KAAK,IAAyB;AAC5B,UAAM,IAAI,KAAK,KAAK,gBAAgB,IAAI,EAAE,EAAE;AAC5C,WAAO,IAAI,kBAAkB,CAAC;AAAA,EAChC;AAAA,EAEA,aAAa,IAAyB;AACpC,WAAO,KAAK,GAAG,eAAe,EAAE;AAAA,EAClC;AAAA,EAEA,OAAO,MAA2B;AAChC,WAAO,KAAK,GAAG,QAAQ,IAAI;AAAA,EAC7B;AAAA,EAEA,GAAG,KAAa,OAA4B;AAC1C,UAAM,IAAI,KAAK,KAAK,gBAAgB,IAAI,GAAG,IAAI,KAAK,GAAG;AACvD,WAAO,IAAI,kBAAkB,CAAC;AAAA,EAChC;AAAA,EAEA,SAAsB;AACpB,WAAO,KAAK,GAAG,QAAQ,QAAQ;AAAA,EACjC;AAAA,EAEA,IAAI,UAA+B;AAEjC,WAAO,KAAK,QAAQ,sBAAsB,QAAQ,SAAS;AAAA,EAC7D;AAAA,EAEA,SAAS,KAA+B;AACtC,WAAO,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,OAAK,GAAG,GAAG,KAAK,KAAK;AAAA,EACvD;AAAA,EAEA,KAAK,IAAa,IAA2B;AAC3C,WAAO,KAAK,SAAS,MAAM,IAAI,KAAK,MAAM,EAAE,CAAC;AAAA,EAC/C;AAAA,EAEA,OAAyB;AACvB,WAAO,KAAK,KAAK,kBAAkB,EAAE,KAAK,OAAK,GAAG,GAAG,KAAK,KAAK;AAAA,EACjE;AAAA,EAEA,QAAuB;AACrB,WAAO,KAAK,QAAQ,MAAM;AAAA,EAC5B;AAAA,EAEQ,QAAQ,GAAwB;AACtC,UAAM,IAAI,KAAK,KAAK,gBAAgB,GAAG,CAAC,EAAE;AAC1C,WAAO,IAAI,kBAAkB,CAAC;AAAA,EAChC;AACF;","names":[]}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/PlaywrightElement.ts","../src/PlaywrightTester.ts"],"sourcesContent":["export * from './PlaywrightElement';\nexport * from './PlaywrightTester';\n","import { ElementHandle } from 'playwright';\nimport { TestElement } from '@thisisagile/easy-test-web';\nimport { isNotEmpty, Json } from '@thisisagile/easy';\n\nexport class PlaywrightElement implements TestElement {\n constructor(private readonly handle: Promise<ElementHandle | null>) {}\n\n click(): Promise<void> {\n return this.handle.then(h => h?.click());\n }\n\n type(text: string): Promise<void> {\n return this.handle.then(h => h?.type(text));\n }\n\n press(key: string): Promise<void> {\n return this.handle.then(h => h?.press(key));\n }\n\n property(property: string): Promise<Json | undefined> {\n return this.handle.then(h => h?.getProperty(property).then(p => p.jsonValue()));\n }\n\n exists(): Promise<boolean> {\n return this.handle.then(h => isNotEmpty(h));\n }\n}\n","import playwright, { Browser, chromium, firefox, Page, webkit } from 'playwright';\nimport { PlaywrightElement } from './PlaywrightElement';\nimport { ctx, Id, Json, UseCase } from '@thisisagile/easy';\nimport { TestElement, Tester, toUrl } from '@thisisagile/easy-test-web';\n\nexport type BrowserType = 'Chromium' | 'Webkit' | 'Firefox';\n\nexport class PlaywrightTester implements Tester {\n constructor(public host: string, private readonly browser: Browser, private readonly page: Page) {}\n\n get url(): string {\n return this.page.url();\n }\n\n /* istanbul ignore next */\n static launch = (browserType: BrowserType, headless: boolean, launchProps: Json): Promise<Browser> => {\n const options: playwright.LaunchOptions = {\n headless: headless,\n args: ['--no-sandbox', '--start-maximized'],\n ...launchProps,\n };\n switch (browserType) {\n case 'Firefox':\n return firefox.launch(options);\n case 'Webkit':\n return webkit.launch(options);\n default:\n return chromium.launch(options);\n }\n };\n\n /* istanbul ignore next */\n static async init(\n browserType: BrowserType,\n host: string = ctx.env.get('webHost', '') as string,\n headless = true,\n width = 1200,\n height = 800,\n launchProps = {}\n ): Promise<Tester> {\n const browser = await PlaywrightTester.launch(browserType, headless, launchProps);\n const page = await browser.newPage();\n await page.setViewportSize({ width, height });\n return new PlaywrightTester(host, browser, page);\n }\n\n byClass(c: string): TestElement {\n const h = this.page.waitForSelector(`.${c}`);\n return new PlaywrightElement(h);\n }\n\n byId(id: string): TestElement {\n const h = this.page.waitForSelector(`#${id}`);\n return new PlaywrightElement(h);\n }\n\n byDataTestId(id: string): TestElement {\n return this.by('data-testid', id);\n }\n\n byName(name: string): TestElement {\n return this.by('name', name);\n }\n\n by(key: string, value: string): TestElement {\n const h = this.page.waitForSelector(`[${key}=${value}]`);\n return new PlaywrightElement(h);\n }\n\n submit(): TestElement {\n return this.by('type', 'submit');\n }\n\n row(contains: string): TestElement {\n // Select the first row that contains the given input\n return this.byXPath(`(//tr[contains(., '${contains}')])[1]`);\n }\n\n redirect(url: string): Promise<boolean> {\n return this.page.goto(url).then(r => r?.ok() ?? false);\n }\n\n goto(to: UseCase, id?: Id): Promise<boolean> {\n return this.redirect(toUrl(to, this.host, id));\n }\n\n wait(): Promise<boolean> {\n return this.page.waitForNavigation().then(r => r?.ok() || false);\n }\n\n close(): Promise<void> {\n return this.browser.close();\n }\n\n private byXPath(q: string): TestElement {\n const h = this.page.waitForSelector(`${q}`);\n return new PlaywrightElement(h);\n }\n}\n"],"mappings":"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","names":["import_easy"]}
|
package/dist/index.mjs
DELETED
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|