@atomic-testing/playwright 0.58.0 → 0.59.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.
@@ -0,0 +1,54 @@
1
+ import { ClickOption, CssProperty, EnterTextOption, FocusOption, HoverOption, Interactor, MouseDownOption, MouseEnterOption, MouseLeaveOption, MouseMoveOption, MouseOutOption, MouseUpOption, Optional, PartLocator, ScenePart, TestEngine, WaitForOption, WaitUntilOption } from "@atomic-testing/core";
2
+ import { Page } from "@playwright/test";
3
+ import { E2eTestInterface, E2eTestRunEnvironmentFixture, TestFrameworkMapper } from "@atomic-testing/test-runner";
4
+
5
+ //#region src/createTestEngine.d.ts
6
+ declare function createTestEngine<T extends ScenePart>(page: Page, partDefinitions: T): TestEngine<T>;
7
+ //#endregion
8
+ //#region src/PlaywrightInteractor.d.ts
9
+ declare class PlaywrightInteractor implements Interactor {
10
+ readonly page: Page;
11
+ constructor(page: Page);
12
+ selectOptionValue(locator: PartLocator, values: string[]): Promise<void>;
13
+ getInputValue(locator: PartLocator): Promise<Optional<string>>;
14
+ getSelectValues(locator: PartLocator): Promise<Optional<readonly string[]>>;
15
+ getSelectLabels(locator: PartLocator): Promise<Optional<readonly string[]>>;
16
+ getStyleValue(locator: PartLocator, propertyName: CssProperty): Promise<Optional<string>>;
17
+ enterText(locator: PartLocator, text: string, option?: Optional<Partial<EnterTextOption>>): Promise<void>;
18
+ click(locator: PartLocator, option?: Partial<ClickOption>): Promise<void>;
19
+ hover(locator: PartLocator, option?: Partial<HoverOption>): Promise<void>;
20
+ mouseMove(locator: PartLocator, option?: Partial<MouseMoveOption>): Promise<void>;
21
+ mouseDown(locator: PartLocator, option?: Partial<MouseDownOption>): Promise<void>;
22
+ mouseUp(locator: PartLocator, option?: Partial<MouseUpOption>): Promise<void>;
23
+ mouseOver(locator: PartLocator, option?: Partial<HoverOption>): Promise<void>;
24
+ mouseOut(locator: PartLocator, _option?: Partial<MouseOutOption>): Promise<void>;
25
+ mouseEnter(locator: PartLocator, _option?: Partial<MouseEnterOption>): Promise<void>;
26
+ mouseLeave(locator: PartLocator, _option?: Partial<MouseLeaveOption>): Promise<void>;
27
+ focus(locator: PartLocator, _option: Partial<FocusOption>): Promise<void>;
28
+ wait(ms: number): Promise<void>;
29
+ waitUntilComponentState(locator: PartLocator, option?: Partial<Readonly<WaitForOption>>): Promise<void>;
30
+ waitUntil<T>(option: WaitUntilOption<T>): Promise<T>;
31
+ getAttribute(locator: PartLocator, name: string, isMultiple: true): Promise<readonly string[]>;
32
+ getAttribute(locator: PartLocator, name: string, isMultiple: false): Promise<Optional<string>>;
33
+ getAttribute(locator: PartLocator, name: string): Promise<Optional<string>>;
34
+ getText(locator: PartLocator): Promise<Optional<string>>;
35
+ exists(locator: PartLocator): Promise<boolean>;
36
+ isChecked(locator: PartLocator): Promise<boolean>;
37
+ isDisabled(locator: PartLocator): Promise<boolean>;
38
+ isReadonly(locator: PartLocator): Promise<boolean>;
39
+ isVisible(locator: PartLocator): Promise<boolean>;
40
+ hasCssClass(locator: PartLocator, className: string): Promise<boolean>;
41
+ hasAttribute(locator: PartLocator, name: string): Promise<boolean>;
42
+ innerHTML(locator: PartLocator): Promise<string>;
43
+ clone(): Interactor;
44
+ }
45
+ //#endregion
46
+ //#region src/testRunnerAdapter.d.ts
47
+ declare function goto(url: string): Promise<void>;
48
+ declare function goto(url: string, fixture: E2eTestRunEnvironmentFixture): Promise<void>;
49
+ declare function playwrightGetTestEngine<T extends ScenePart>(scenePart: T, fixture: E2eTestRunEnvironmentFixture): TestEngine<T>;
50
+ declare const playWrightTestFrameworkMapper: TestFrameworkMapper;
51
+ declare function getTestRunnerInterface<T extends ScenePart>(): E2eTestInterface<T>;
52
+ //#endregion
53
+ export { PlaywrightInteractor, createTestEngine, getTestRunnerInterface, goto, playWrightTestFrameworkMapper, playwrightGetTestEngine };
54
+ //# sourceMappingURL=index.d.mts.map
package/dist/index.d.ts CHANGED
@@ -1,3 +1,54 @@
1
- export { createTestEngine } from './createTestEngine';
2
- export { PlaywrightInteractor } from './PlaywrightInteractor';
3
- export * from './testRunnerAdapter';
1
+ import { ClickOption, CssProperty, EnterTextOption, FocusOption, HoverOption, Interactor, MouseDownOption, MouseEnterOption, MouseLeaveOption, MouseMoveOption, MouseOutOption, MouseUpOption, Optional, PartLocator, ScenePart, TestEngine, WaitForOption, WaitUntilOption } from "@atomic-testing/core";
2
+ import { Page } from "@playwright/test";
3
+ import { E2eTestInterface, E2eTestRunEnvironmentFixture, TestFrameworkMapper } from "@atomic-testing/test-runner";
4
+
5
+ //#region src/createTestEngine.d.ts
6
+ declare function createTestEngine<T extends ScenePart>(page: Page, partDefinitions: T): TestEngine<T>;
7
+ //#endregion
8
+ //#region src/PlaywrightInteractor.d.ts
9
+ declare class PlaywrightInteractor implements Interactor {
10
+ readonly page: Page;
11
+ constructor(page: Page);
12
+ selectOptionValue(locator: PartLocator, values: string[]): Promise<void>;
13
+ getInputValue(locator: PartLocator): Promise<Optional<string>>;
14
+ getSelectValues(locator: PartLocator): Promise<Optional<readonly string[]>>;
15
+ getSelectLabels(locator: PartLocator): Promise<Optional<readonly string[]>>;
16
+ getStyleValue(locator: PartLocator, propertyName: CssProperty): Promise<Optional<string>>;
17
+ enterText(locator: PartLocator, text: string, option?: Optional<Partial<EnterTextOption>>): Promise<void>;
18
+ click(locator: PartLocator, option?: Partial<ClickOption>): Promise<void>;
19
+ hover(locator: PartLocator, option?: Partial<HoverOption>): Promise<void>;
20
+ mouseMove(locator: PartLocator, option?: Partial<MouseMoveOption>): Promise<void>;
21
+ mouseDown(locator: PartLocator, option?: Partial<MouseDownOption>): Promise<void>;
22
+ mouseUp(locator: PartLocator, option?: Partial<MouseUpOption>): Promise<void>;
23
+ mouseOver(locator: PartLocator, option?: Partial<HoverOption>): Promise<void>;
24
+ mouseOut(locator: PartLocator, _option?: Partial<MouseOutOption>): Promise<void>;
25
+ mouseEnter(locator: PartLocator, _option?: Partial<MouseEnterOption>): Promise<void>;
26
+ mouseLeave(locator: PartLocator, _option?: Partial<MouseLeaveOption>): Promise<void>;
27
+ focus(locator: PartLocator, _option: Partial<FocusOption>): Promise<void>;
28
+ wait(ms: number): Promise<void>;
29
+ waitUntilComponentState(locator: PartLocator, option?: Partial<Readonly<WaitForOption>>): Promise<void>;
30
+ waitUntil<T>(option: WaitUntilOption<T>): Promise<T>;
31
+ getAttribute(locator: PartLocator, name: string, isMultiple: true): Promise<readonly string[]>;
32
+ getAttribute(locator: PartLocator, name: string, isMultiple: false): Promise<Optional<string>>;
33
+ getAttribute(locator: PartLocator, name: string): Promise<Optional<string>>;
34
+ getText(locator: PartLocator): Promise<Optional<string>>;
35
+ exists(locator: PartLocator): Promise<boolean>;
36
+ isChecked(locator: PartLocator): Promise<boolean>;
37
+ isDisabled(locator: PartLocator): Promise<boolean>;
38
+ isReadonly(locator: PartLocator): Promise<boolean>;
39
+ isVisible(locator: PartLocator): Promise<boolean>;
40
+ hasCssClass(locator: PartLocator, className: string): Promise<boolean>;
41
+ hasAttribute(locator: PartLocator, name: string): Promise<boolean>;
42
+ innerHTML(locator: PartLocator): Promise<string>;
43
+ clone(): Interactor;
44
+ }
45
+ //#endregion
46
+ //#region src/testRunnerAdapter.d.ts
47
+ declare function goto(url: string): Promise<void>;
48
+ declare function goto(url: string, fixture: E2eTestRunEnvironmentFixture): Promise<void>;
49
+ declare function playwrightGetTestEngine<T extends ScenePart>(scenePart: T, fixture: E2eTestRunEnvironmentFixture): TestEngine<T>;
50
+ declare const playWrightTestFrameworkMapper: TestFrameworkMapper;
51
+ declare function getTestRunnerInterface<T extends ScenePart>(): E2eTestInterface<T>;
52
+ //#endregion
53
+ export { PlaywrightInteractor, createTestEngine, getTestRunnerInterface, goto, playWrightTestFrameworkMapper, playwrightGetTestEngine };
54
+ //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,23 +1,247 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
1
+ //#region rolldown:runtime
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
15
17
  };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.PlaywrightInteractor = exports.createTestEngine = void 0;
18
- var createTestEngine_1 = require("./createTestEngine");
19
- Object.defineProperty(exports, "createTestEngine", { enumerable: true, get: function () { return createTestEngine_1.createTestEngine; } });
20
- var PlaywrightInteractor_1 = require("./PlaywrightInteractor");
21
- Object.defineProperty(exports, "PlaywrightInteractor", { enumerable: true, get: function () { return PlaywrightInteractor_1.PlaywrightInteractor; } });
22
- __exportStar(require("./testRunnerAdapter"), exports);
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+
23
+ //#endregion
24
+ const __atomic_testing_core = __toESM(require("@atomic-testing/core"));
25
+ const __playwright_test = __toESM(require("@playwright/test"));
26
+
27
+ //#region src/PlaywrightInteractor.ts
28
+ var PlaywrightInteractor = class PlaywrightInteractor {
29
+ constructor(page) {
30
+ this.page = page;
31
+ }
32
+ async selectOptionValue(locator, values) {
33
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(locator, this);
34
+ await this.page.locator(cssLocator).selectOption(values);
35
+ }
36
+ async getInputValue(locator) {
37
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(locator, this);
38
+ return this.page.locator(cssLocator).inputValue();
39
+ }
40
+ async getSelectValues(locator) {
41
+ const optionLocator = (0, __atomic_testing_core.byCssSelector)("option:checked");
42
+ const selectedOptionLocator = __atomic_testing_core.locatorUtil.append(locator, optionLocator);
43
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(selectedOptionLocator, this);
44
+ const allOptions = await this.page.locator(cssLocator).all();
45
+ const values = [];
46
+ for (const option of allOptions) {
47
+ const value = await option.getAttribute("value");
48
+ if (value != null) values.push(value);
49
+ }
50
+ return values;
51
+ }
52
+ async getSelectLabels(locator) {
53
+ const optionLocator = (0, __atomic_testing_core.byCssSelector)("option:checked");
54
+ const selectedOptionLocator = __atomic_testing_core.locatorUtil.append(locator, optionLocator);
55
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(selectedOptionLocator, this);
56
+ const allOptions = await this.page.locator(cssLocator).all();
57
+ const labels = [];
58
+ for (const option of allOptions) {
59
+ const label = await option.textContent();
60
+ if (label != null) labels.push(label);
61
+ }
62
+ return labels;
63
+ }
64
+ async getStyleValue(locator, propertyName) {
65
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(locator, this);
66
+ const elLocator = this.page.locator(cssLocator);
67
+ const value = await elLocator.evaluate((element, prop) => {
68
+ return window.getComputedStyle(element).getPropertyValue(prop);
69
+ }, propertyName);
70
+ return value;
71
+ }
72
+ async enterText(locator, text, option) {
73
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(locator, this);
74
+ if (!option?.append) await this.page.locator(cssLocator).clear();
75
+ const type = await this.getAttribute(locator, "type") ?? "";
76
+ if (__atomic_testing_core.dateUtil.isHtmlDateInputType(type)) {
77
+ const result = __atomic_testing_core.dateUtil.validateHtmlDateInput(type, text);
78
+ if (!result.valid) throw new Error(`Invalid date format for type: ${type}, expected format: ${result.format}, example: ${result.example}`);
79
+ }
80
+ await this.page.locator(cssLocator).fill(text);
81
+ }
82
+ async click(locator, option) {
83
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(locator, this);
84
+ await this.page.locator(cssLocator).click({ position: option?.position });
85
+ }
86
+ async hover(locator, option) {
87
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(locator, this);
88
+ await this.page.locator(cssLocator).hover({ position: option?.position });
89
+ }
90
+ async mouseMove(locator, option) {
91
+ await this.hover(locator, { position: option?.position });
92
+ await this.page.mouse.move(0, 0);
93
+ }
94
+ async mouseDown(locator, option) {
95
+ await this.hover(locator, { position: option?.position });
96
+ await this.page.mouse.down();
97
+ }
98
+ async mouseUp(locator, option) {
99
+ await this.hover(locator, { position: option?.position });
100
+ await this.page.mouse.up();
101
+ }
102
+ async mouseOver(locator, option) {
103
+ return this.hover(locator, option);
104
+ }
105
+ async mouseOut(locator, _option) {
106
+ await this.hover(locator, { position: {
107
+ x: 0,
108
+ y: 0
109
+ } });
110
+ await this.page.mouse.move(-10, -10);
111
+ }
112
+ async mouseEnter(locator, _option) {
113
+ return this.hover(locator);
114
+ }
115
+ async mouseLeave(locator, _option) {
116
+ return this.mouseOut(locator);
117
+ }
118
+ async focus(locator, _option) {
119
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(locator, this);
120
+ return this.page.focus(cssLocator);
121
+ }
122
+ wait(ms) {
123
+ return __atomic_testing_core.timingUtil.wait(ms);
124
+ }
125
+ async waitUntilComponentState(locator, option = __atomic_testing_core.defaultWaitForOption) {
126
+ return __atomic_testing_core.interactorUtil.interactorWaitUtil(locator, this, option);
127
+ }
128
+ waitUntil(option) {
129
+ return __atomic_testing_core.timingUtil.waitUntil(option);
130
+ }
131
+ async getAttribute(locator, name, isMultiple) {
132
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(locator, this);
133
+ const elLocator = this.page.locator(cssLocator);
134
+ if (isMultiple) {
135
+ const locators = await elLocator.all();
136
+ const values = [];
137
+ for (const locator$1 of locators) {
138
+ const value$1 = await locator$1.getAttribute(name);
139
+ if (value$1 != null) values.push(value$1);
140
+ }
141
+ return values;
142
+ }
143
+ const value = await elLocator.getAttribute(name);
144
+ return value ?? void 0;
145
+ }
146
+ async getText(locator) {
147
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(locator, this);
148
+ const text = await this.page.locator(cssLocator).textContent();
149
+ return text ?? void 0;
150
+ }
151
+ async exists(locator) {
152
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(locator, this);
153
+ const count = await this.page.locator(cssLocator).count();
154
+ return count > 0;
155
+ }
156
+ async isChecked(locator) {
157
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(locator, this);
158
+ const checked = await this.page.locator(cssLocator).isChecked();
159
+ return checked;
160
+ }
161
+ async isDisabled(locator) {
162
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(locator, this);
163
+ const isDisabled = await this.page.locator(cssLocator).isDisabled();
164
+ return isDisabled;
165
+ }
166
+ async isReadonly(locator) {
167
+ const readonly = await this.getAttribute(locator, "readonly");
168
+ return readonly != null;
169
+ }
170
+ async isVisible(locator) {
171
+ const exists = await this.exists(locator);
172
+ if (!exists) return false;
173
+ async function checkCssVisibility(prop, invisibleValue, interactor) {
174
+ try {
175
+ const value = await interactor.getStyleValue(locator, prop);
176
+ return value !== invisibleValue;
177
+ } catch (e) {
178
+ if (await interactor.exists(locator) === false) return false;
179
+ throw e;
180
+ }
181
+ }
182
+ if (await checkCssVisibility("opacity", "0", this) === false) return false;
183
+ if (await checkCssVisibility("visibility", "hidden", this) === false) return false;
184
+ if (await checkCssVisibility("display", "none", this) === false) return false;
185
+ return true;
186
+ }
187
+ async hasCssClass(locator, className) {
188
+ const classNames = await this.getAttribute(locator, "class");
189
+ if (classNames == null) return false;
190
+ const names = classNames.split(/\s+/);
191
+ return names.includes(className);
192
+ }
193
+ async hasAttribute(locator, name) {
194
+ const attrValue = await this.getAttribute(locator, name);
195
+ return attrValue != null;
196
+ }
197
+ async innerHTML(locator) {
198
+ const cssLocator = await __atomic_testing_core.locatorUtil.toCssSelector(locator, this);
199
+ return this.page.locator(cssLocator).innerHTML();
200
+ }
201
+ clone() {
202
+ return new PlaywrightInteractor(this.page);
203
+ }
204
+ };
205
+
206
+ //#endregion
207
+ //#region src/createTestEngine.ts
208
+ function createTestEngine(page, partDefinitions) {
209
+ const engine = new __atomic_testing_core.TestEngine([], new PlaywrightInteractor(page), { parts: partDefinitions });
210
+ return engine;
211
+ }
212
+
213
+ //#endregion
214
+ //#region src/testRunnerAdapter.ts
215
+ async function goto(url, fixture) {
216
+ const page = fixture.page;
217
+ await page.goto(url);
218
+ }
219
+ function playwrightGetTestEngine(scenePart, fixture) {
220
+ const page = fixture.page;
221
+ return createTestEngine(page, scenePart);
222
+ }
223
+ const playWrightTestFrameworkMapper = {
224
+ assertEqual: (a, b) => (0, __playwright_test.expect)(a).toEqual(b),
225
+ describe: __playwright_test.test.describe,
226
+ beforeEach: __playwright_test.test.beforeEach,
227
+ afterEach: __playwright_test.test.afterEach,
228
+ beforeAll: __playwright_test.test.beforeAll,
229
+ afterAll: __playwright_test.test.afterAll,
230
+ test: __playwright_test.test,
231
+ it: __playwright_test.test
232
+ };
233
+ function getTestRunnerInterface() {
234
+ return {
235
+ getTestEngine: playwrightGetTestEngine,
236
+ goto
237
+ };
238
+ }
239
+
240
+ //#endregion
241
+ exports.PlaywrightInteractor = PlaywrightInteractor;
242
+ exports.createTestEngine = createTestEngine;
243
+ exports.getTestRunnerInterface = getTestRunnerInterface;
244
+ exports.goto = goto;
245
+ exports.playWrightTestFrameworkMapper = playWrightTestFrameworkMapper;
246
+ exports.playwrightGetTestEngine = playwrightGetTestEngine;
23
247
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,sDAAoC"}
1
+ {"version":3,"file":"index.js","names":["page: Page","locator: PartLocator","values: string[]","optionLocator: PartLocator","labels: string[]","propertyName: CssProperty","text: string","option?: Optional<Partial<EnterTextOption>>","option?: Partial<ClickOption>","option?: Partial<HoverOption>","option?: Partial<MouseMoveOption>","option?: Partial<MouseDownOption>","option?: Partial<MouseUpOption>","_option?: Partial<MouseOutOption>","_option?: Partial<MouseEnterOption>","_option?: Partial<MouseLeaveOption>","_option: Partial<FocusOption>","ms: number","option: Partial<Readonly<WaitForOption>>","defaultWaitForOption","option: WaitUntilOption<T>","name: string","isMultiple?: boolean","locator","value","prop: CssProperty","invisibleValue: string","interactor: PlaywrightInteractor","className: string","page: Page","partDefinitions: T","TestEngine","url: string","fixture?: E2eTestRunEnvironmentFixture","scenePart: T","fixture: E2eTestRunEnvironmentFixture","playWrightTestFrameworkMapper: TestFrameworkMapper","test"],"sources":["../src/PlaywrightInteractor.ts","../src/createTestEngine.ts","../src/testRunnerAdapter.ts"],"sourcesContent":["import {\n byCssSelector,\n ClickOption,\n CssProperty,\n dateUtil,\n defaultWaitForOption,\n EnterTextOption,\n FocusOption,\n HoverOption,\n Interactor,\n interactorUtil,\n locatorUtil,\n MouseEnterOption,\n MouseLeaveOption,\n MouseOutOption,\n MouseDownOption,\n MouseMoveOption,\n MouseUpOption,\n Optional,\n PartLocator,\n timingUtil,\n WaitForOption,\n WaitUntilOption,\n} from '@atomic-testing/core';\nimport { Page } from '@playwright/test';\n\nexport class PlaywrightInteractor implements Interactor {\n constructor(public readonly page: Page) {}\n\n async selectOptionValue(locator: PartLocator, values: string[]): Promise<void> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n await this.page.locator(cssLocator).selectOption(values);\n }\n\n async getInputValue(locator: PartLocator): Promise<Optional<string>> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n return this.page.locator(cssLocator).inputValue();\n }\n\n async getSelectValues(locator: PartLocator): Promise<Optional<readonly string[]>> {\n const optionLocator: PartLocator = byCssSelector('option:checked');\n const selectedOptionLocator = locatorUtil.append(locator, optionLocator);\n const cssLocator = await locatorUtil.toCssSelector(selectedOptionLocator, this);\n const allOptions = await this.page.locator(cssLocator).all();\n const values: string[] = [];\n for (const option of allOptions) {\n const value = await option.getAttribute('value');\n if (value != null) {\n values.push(value);\n }\n }\n return values;\n }\n\n async getSelectLabels(locator: PartLocator): Promise<Optional<readonly string[]>> {\n const optionLocator: PartLocator = byCssSelector('option:checked');\n const selectedOptionLocator = locatorUtil.append(locator, optionLocator);\n const cssLocator = await locatorUtil.toCssSelector(selectedOptionLocator, this);\n const allOptions = await this.page.locator(cssLocator).all();\n const labels: string[] = [];\n for (const option of allOptions) {\n const label = await option.textContent();\n if (label != null) {\n labels.push(label);\n }\n }\n return labels;\n }\n\n async getStyleValue(locator: PartLocator, propertyName: CssProperty): Promise<Optional<string>> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n const elLocator = this.page.locator(cssLocator);\n const value = await elLocator.evaluate((element, prop) => {\n return window.getComputedStyle(element).getPropertyValue(prop as string);\n }, propertyName);\n return value;\n }\n\n async enterText(locator: PartLocator, text: string, option?: Optional<Partial<EnterTextOption>>): Promise<void> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n if (!option?.append) {\n await this.page.locator(cssLocator).clear();\n }\n\n // If it is a date, time or datetime-local input, validate the date format\n const type = (await this.getAttribute(locator, 'type')) ?? '';\n if (dateUtil.isHtmlDateInputType(type)) {\n const result = dateUtil.validateHtmlDateInput(type, text);\n if (!result.valid) {\n throw new Error(\n `Invalid date format for type: ${type}, expected format: ${result.format}, example: ${result.example}`\n );\n }\n }\n await this.page.locator(cssLocator).fill(text);\n }\n\n async click(locator: PartLocator, option?: Partial<ClickOption>): Promise<void> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n await this.page.locator(cssLocator).click({ position: option?.position });\n }\n\n async hover(locator: PartLocator, option?: Partial<HoverOption>): Promise<void> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n await this.page.locator(cssLocator).hover({ position: option?.position });\n }\n\n async mouseMove(locator: PartLocator, option?: Partial<MouseMoveOption>): Promise<void> {\n await this.hover(locator, {\n position: option?.position,\n });\n await this.page.mouse.move(0, 0);\n }\n\n async mouseDown(locator: PartLocator, option?: Partial<MouseDownOption>): Promise<void> {\n await this.hover(locator, {\n position: option?.position,\n });\n await this.page.mouse.down();\n }\n\n async mouseUp(locator: PartLocator, option?: Partial<MouseUpOption>): Promise<void> {\n await this.hover(locator, {\n position: option?.position,\n });\n await this.page.mouse.up();\n }\n\n async mouseOver(locator: PartLocator, option?: Partial<HoverOption>): Promise<void> {\n return this.hover(locator, option);\n }\n\n async mouseOut(locator: PartLocator, _option?: Partial<MouseOutOption>): Promise<void> {\n await this.hover(locator, {\n position: {\n x: 0,\n y: 0,\n },\n });\n await this.page.mouse.move(-10, -10);\n }\n\n async mouseEnter(locator: PartLocator, _option?: Partial<MouseEnterOption>): Promise<void> {\n return this.hover(locator);\n }\n\n async mouseLeave(locator: PartLocator, _option?: Partial<MouseLeaveOption>): Promise<void> {\n return this.mouseOut(locator);\n }\n\n async focus(locator: PartLocator, _option: Partial<FocusOption>): Promise<void> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n return this.page.focus(cssLocator);\n }\n\n //#region wait conditions\n wait(ms: number): Promise<void> {\n return timingUtil.wait(ms);\n }\n\n async waitUntilComponentState(\n locator: PartLocator,\n option: Partial<Readonly<WaitForOption>> = defaultWaitForOption\n ): Promise<void> {\n return interactorUtil.interactorWaitUtil(locator, this, option);\n }\n\n waitUntil<T>(option: WaitUntilOption<T>): Promise<T> {\n return timingUtil.waitUntil(option);\n }\n //#endregion\n\n async getAttribute(locator: PartLocator, name: string, isMultiple: true): Promise<readonly string[]>;\n async getAttribute(locator: PartLocator, name: string, isMultiple: false): Promise<Optional<string>>;\n async getAttribute(locator: PartLocator, name: string): Promise<Optional<string>>;\n async getAttribute(\n locator: PartLocator,\n name: string,\n isMultiple?: boolean\n ): Promise<Optional<string> | readonly string[]> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n const elLocator = this.page.locator(cssLocator);\n if (isMultiple) {\n const locators = await elLocator.all();\n const values: string[] = [];\n for (const locator of locators) {\n const value = await locator.getAttribute(name);\n if (value != null) {\n values.push(value);\n }\n }\n return values;\n }\n const value = await elLocator.getAttribute(name);\n return value ?? undefined;\n }\n\n async getText(locator: PartLocator): Promise<Optional<string>> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n const text = await this.page.locator(cssLocator).textContent();\n return text ?? undefined;\n }\n\n async exists(locator: PartLocator): Promise<boolean> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n const count = await this.page.locator(cssLocator).count();\n return count > 0;\n }\n\n async isChecked(locator: PartLocator): Promise<boolean> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n const checked = await this.page.locator(cssLocator).isChecked();\n return checked;\n }\n\n async isDisabled(locator: PartLocator): Promise<boolean> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n const isDisabled = await this.page.locator(cssLocator).isDisabled();\n return isDisabled;\n }\n\n async isReadonly(locator: PartLocator): Promise<boolean> {\n const readonly = await this.getAttribute(locator, 'readonly');\n return readonly != null;\n }\n\n async isVisible(locator: PartLocator): Promise<boolean> {\n const exists = await this.exists(locator);\n if (!exists) {\n return false;\n }\n\n async function checkCssVisibility(\n prop: CssProperty,\n invisibleValue: string,\n interactor: PlaywrightInteractor\n ): Promise<boolean> {\n try {\n const value = await interactor.getStyleValue(locator, prop);\n return value !== invisibleValue;\n } catch (e) {\n // Element may disappear or detached while being checked because of animation\n // when it happens, an error is thrown. In this case, if indeed the element\n // is not visible, we return false. Otherwise, we re-throw the error.\n if ((await interactor.exists(locator)) === false) {\n return false;\n }\n throw e;\n }\n }\n\n if ((await checkCssVisibility('opacity', '0', this)) === false) {\n return false;\n }\n\n if ((await checkCssVisibility('visibility', 'hidden', this)) === false) {\n return false;\n }\n\n if ((await checkCssVisibility('display', 'none', this)) === false) {\n return false;\n }\n\n return true;\n }\n\n async hasCssClass(locator: PartLocator, className: string): Promise<boolean> {\n const classNames = await this.getAttribute(locator, 'class');\n if (classNames == null) {\n return false;\n }\n\n const names = classNames.split(/\\s+/);\n return names.includes(className);\n }\n\n async hasAttribute(locator: PartLocator, name: string): Promise<boolean> {\n const attrValue = await this.getAttribute(locator, name);\n return attrValue != null;\n }\n\n //#region\n async innerHTML(locator: PartLocator): Promise<string> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n return this.page.locator(cssLocator).innerHTML();\n }\n //#endregion\n\n clone(): Interactor {\n return new PlaywrightInteractor(this.page);\n }\n}\n","import { ScenePart, TestEngine } from '@atomic-testing/core';\nimport { Page } from '@playwright/test';\n\nimport { PlaywrightInteractor } from './PlaywrightInteractor';\n\nexport function createTestEngine<T extends ScenePart>(page: Page, partDefinitions: T): TestEngine<T> {\n const engine = new TestEngine([], new PlaywrightInteractor(page), {\n parts: partDefinitions,\n });\n\n return engine;\n}\n","import { ScenePart, TestEngine } from '@atomic-testing/core';\nimport { E2eTestInterface, E2eTestRunEnvironmentFixture, TestFrameworkMapper } from '@atomic-testing/test-runner';\nimport { expect, Page, test } from '@playwright/test';\n\nimport { createTestEngine } from './createTestEngine';\n\nexport async function goto(url: string): Promise<void>;\nexport async function goto(url: string, fixture: E2eTestRunEnvironmentFixture): Promise<void>;\nexport async function goto(url: string, fixture?: E2eTestRunEnvironmentFixture): Promise<void> {\n const page = fixture!.page as Page;\n await page.goto(url);\n}\n\nexport function playwrightGetTestEngine<T extends ScenePart>(\n scenePart: T,\n fixture: E2eTestRunEnvironmentFixture\n): TestEngine<T> {\n const page = fixture.page as Page;\n return createTestEngine(page, scenePart);\n}\n\nexport const playWrightTestFrameworkMapper: TestFrameworkMapper = {\n assertEqual: (a, b) => expect(a).toEqual(b),\n // @ts-expect-error - expect type is not compatible with the type of the test framework\n describe: test.describe,\n\n beforeEach: test.beforeEach,\n afterEach: test.afterEach,\n beforeAll: test.beforeAll,\n afterAll: test.afterAll,\n\n // @ts-expect-error - expect type is not compatible with the type of the test framework\n test: test,\n\n // @ts-expect-error - expect type is not compatible with the type of the test framework\n it: test,\n};\n\nexport function getTestRunnerInterface<T extends ScenePart>(): E2eTestInterface<T> {\n return {\n getTestEngine: playwrightGetTestEngine,\n goto,\n };\n}\n"],"mappings":"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"}
package/dist/index.mjs ADDED
@@ -0,0 +1,219 @@
1
+ import { TestEngine, byCssSelector, dateUtil, defaultWaitForOption, interactorUtil, locatorUtil, timingUtil } from "@atomic-testing/core";
2
+ import { expect, test } from "@playwright/test";
3
+
4
+ //#region src/PlaywrightInteractor.ts
5
+ var PlaywrightInteractor = class PlaywrightInteractor {
6
+ constructor(page) {
7
+ this.page = page;
8
+ }
9
+ async selectOptionValue(locator, values) {
10
+ const cssLocator = await locatorUtil.toCssSelector(locator, this);
11
+ await this.page.locator(cssLocator).selectOption(values);
12
+ }
13
+ async getInputValue(locator) {
14
+ const cssLocator = await locatorUtil.toCssSelector(locator, this);
15
+ return this.page.locator(cssLocator).inputValue();
16
+ }
17
+ async getSelectValues(locator) {
18
+ const optionLocator = byCssSelector("option:checked");
19
+ const selectedOptionLocator = locatorUtil.append(locator, optionLocator);
20
+ const cssLocator = await locatorUtil.toCssSelector(selectedOptionLocator, this);
21
+ const allOptions = await this.page.locator(cssLocator).all();
22
+ const values = [];
23
+ for (const option of allOptions) {
24
+ const value = await option.getAttribute("value");
25
+ if (value != null) values.push(value);
26
+ }
27
+ return values;
28
+ }
29
+ async getSelectLabels(locator) {
30
+ const optionLocator = byCssSelector("option:checked");
31
+ const selectedOptionLocator = locatorUtil.append(locator, optionLocator);
32
+ const cssLocator = await locatorUtil.toCssSelector(selectedOptionLocator, this);
33
+ const allOptions = await this.page.locator(cssLocator).all();
34
+ const labels = [];
35
+ for (const option of allOptions) {
36
+ const label = await option.textContent();
37
+ if (label != null) labels.push(label);
38
+ }
39
+ return labels;
40
+ }
41
+ async getStyleValue(locator, propertyName) {
42
+ const cssLocator = await locatorUtil.toCssSelector(locator, this);
43
+ const elLocator = this.page.locator(cssLocator);
44
+ const value = await elLocator.evaluate((element, prop) => {
45
+ return window.getComputedStyle(element).getPropertyValue(prop);
46
+ }, propertyName);
47
+ return value;
48
+ }
49
+ async enterText(locator, text, option) {
50
+ const cssLocator = await locatorUtil.toCssSelector(locator, this);
51
+ if (!option?.append) await this.page.locator(cssLocator).clear();
52
+ const type = await this.getAttribute(locator, "type") ?? "";
53
+ if (dateUtil.isHtmlDateInputType(type)) {
54
+ const result = dateUtil.validateHtmlDateInput(type, text);
55
+ if (!result.valid) throw new Error(`Invalid date format for type: ${type}, expected format: ${result.format}, example: ${result.example}`);
56
+ }
57
+ await this.page.locator(cssLocator).fill(text);
58
+ }
59
+ async click(locator, option) {
60
+ const cssLocator = await locatorUtil.toCssSelector(locator, this);
61
+ await this.page.locator(cssLocator).click({ position: option?.position });
62
+ }
63
+ async hover(locator, option) {
64
+ const cssLocator = await locatorUtil.toCssSelector(locator, this);
65
+ await this.page.locator(cssLocator).hover({ position: option?.position });
66
+ }
67
+ async mouseMove(locator, option) {
68
+ await this.hover(locator, { position: option?.position });
69
+ await this.page.mouse.move(0, 0);
70
+ }
71
+ async mouseDown(locator, option) {
72
+ await this.hover(locator, { position: option?.position });
73
+ await this.page.mouse.down();
74
+ }
75
+ async mouseUp(locator, option) {
76
+ await this.hover(locator, { position: option?.position });
77
+ await this.page.mouse.up();
78
+ }
79
+ async mouseOver(locator, option) {
80
+ return this.hover(locator, option);
81
+ }
82
+ async mouseOut(locator, _option) {
83
+ await this.hover(locator, { position: {
84
+ x: 0,
85
+ y: 0
86
+ } });
87
+ await this.page.mouse.move(-10, -10);
88
+ }
89
+ async mouseEnter(locator, _option) {
90
+ return this.hover(locator);
91
+ }
92
+ async mouseLeave(locator, _option) {
93
+ return this.mouseOut(locator);
94
+ }
95
+ async focus(locator, _option) {
96
+ const cssLocator = await locatorUtil.toCssSelector(locator, this);
97
+ return this.page.focus(cssLocator);
98
+ }
99
+ wait(ms) {
100
+ return timingUtil.wait(ms);
101
+ }
102
+ async waitUntilComponentState(locator, option = defaultWaitForOption) {
103
+ return interactorUtil.interactorWaitUtil(locator, this, option);
104
+ }
105
+ waitUntil(option) {
106
+ return timingUtil.waitUntil(option);
107
+ }
108
+ async getAttribute(locator, name, isMultiple) {
109
+ const cssLocator = await locatorUtil.toCssSelector(locator, this);
110
+ const elLocator = this.page.locator(cssLocator);
111
+ if (isMultiple) {
112
+ const locators = await elLocator.all();
113
+ const values = [];
114
+ for (const locator$1 of locators) {
115
+ const value$1 = await locator$1.getAttribute(name);
116
+ if (value$1 != null) values.push(value$1);
117
+ }
118
+ return values;
119
+ }
120
+ const value = await elLocator.getAttribute(name);
121
+ return value ?? void 0;
122
+ }
123
+ async getText(locator) {
124
+ const cssLocator = await locatorUtil.toCssSelector(locator, this);
125
+ const text = await this.page.locator(cssLocator).textContent();
126
+ return text ?? void 0;
127
+ }
128
+ async exists(locator) {
129
+ const cssLocator = await locatorUtil.toCssSelector(locator, this);
130
+ const count = await this.page.locator(cssLocator).count();
131
+ return count > 0;
132
+ }
133
+ async isChecked(locator) {
134
+ const cssLocator = await locatorUtil.toCssSelector(locator, this);
135
+ const checked = await this.page.locator(cssLocator).isChecked();
136
+ return checked;
137
+ }
138
+ async isDisabled(locator) {
139
+ const cssLocator = await locatorUtil.toCssSelector(locator, this);
140
+ const isDisabled = await this.page.locator(cssLocator).isDisabled();
141
+ return isDisabled;
142
+ }
143
+ async isReadonly(locator) {
144
+ const readonly = await this.getAttribute(locator, "readonly");
145
+ return readonly != null;
146
+ }
147
+ async isVisible(locator) {
148
+ const exists = await this.exists(locator);
149
+ if (!exists) return false;
150
+ async function checkCssVisibility(prop, invisibleValue, interactor) {
151
+ try {
152
+ const value = await interactor.getStyleValue(locator, prop);
153
+ return value !== invisibleValue;
154
+ } catch (e) {
155
+ if (await interactor.exists(locator) === false) return false;
156
+ throw e;
157
+ }
158
+ }
159
+ if (await checkCssVisibility("opacity", "0", this) === false) return false;
160
+ if (await checkCssVisibility("visibility", "hidden", this) === false) return false;
161
+ if (await checkCssVisibility("display", "none", this) === false) return false;
162
+ return true;
163
+ }
164
+ async hasCssClass(locator, className) {
165
+ const classNames = await this.getAttribute(locator, "class");
166
+ if (classNames == null) return false;
167
+ const names = classNames.split(/\s+/);
168
+ return names.includes(className);
169
+ }
170
+ async hasAttribute(locator, name) {
171
+ const attrValue = await this.getAttribute(locator, name);
172
+ return attrValue != null;
173
+ }
174
+ async innerHTML(locator) {
175
+ const cssLocator = await locatorUtil.toCssSelector(locator, this);
176
+ return this.page.locator(cssLocator).innerHTML();
177
+ }
178
+ clone() {
179
+ return new PlaywrightInteractor(this.page);
180
+ }
181
+ };
182
+
183
+ //#endregion
184
+ //#region src/createTestEngine.ts
185
+ function createTestEngine(page, partDefinitions) {
186
+ const engine = new TestEngine([], new PlaywrightInteractor(page), { parts: partDefinitions });
187
+ return engine;
188
+ }
189
+
190
+ //#endregion
191
+ //#region src/testRunnerAdapter.ts
192
+ async function goto(url, fixture) {
193
+ const page = fixture.page;
194
+ await page.goto(url);
195
+ }
196
+ function playwrightGetTestEngine(scenePart, fixture) {
197
+ const page = fixture.page;
198
+ return createTestEngine(page, scenePart);
199
+ }
200
+ const playWrightTestFrameworkMapper = {
201
+ assertEqual: (a, b) => expect(a).toEqual(b),
202
+ describe: test.describe,
203
+ beforeEach: test.beforeEach,
204
+ afterEach: test.afterEach,
205
+ beforeAll: test.beforeAll,
206
+ afterAll: test.afterAll,
207
+ test,
208
+ it: test
209
+ };
210
+ function getTestRunnerInterface() {
211
+ return {
212
+ getTestEngine: playwrightGetTestEngine,
213
+ goto
214
+ };
215
+ }
216
+
217
+ //#endregion
218
+ export { PlaywrightInteractor, createTestEngine, getTestRunnerInterface, goto, playWrightTestFrameworkMapper, playwrightGetTestEngine };
219
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["page: Page","locator: PartLocator","values: string[]","optionLocator: PartLocator","labels: string[]","propertyName: CssProperty","text: string","option?: Optional<Partial<EnterTextOption>>","option?: Partial<ClickOption>","option?: Partial<HoverOption>","option?: Partial<MouseMoveOption>","option?: Partial<MouseDownOption>","option?: Partial<MouseUpOption>","_option?: Partial<MouseOutOption>","_option?: Partial<MouseEnterOption>","_option?: Partial<MouseLeaveOption>","_option: Partial<FocusOption>","ms: number","option: Partial<Readonly<WaitForOption>>","option: WaitUntilOption<T>","name: string","isMultiple?: boolean","locator","value","prop: CssProperty","invisibleValue: string","interactor: PlaywrightInteractor","className: string","page: Page","partDefinitions: T","url: string","fixture?: E2eTestRunEnvironmentFixture","scenePart: T","fixture: E2eTestRunEnvironmentFixture","playWrightTestFrameworkMapper: TestFrameworkMapper"],"sources":["../src/PlaywrightInteractor.ts","../src/createTestEngine.ts","../src/testRunnerAdapter.ts"],"sourcesContent":["import {\n byCssSelector,\n ClickOption,\n CssProperty,\n dateUtil,\n defaultWaitForOption,\n EnterTextOption,\n FocusOption,\n HoverOption,\n Interactor,\n interactorUtil,\n locatorUtil,\n MouseEnterOption,\n MouseLeaveOption,\n MouseOutOption,\n MouseDownOption,\n MouseMoveOption,\n MouseUpOption,\n Optional,\n PartLocator,\n timingUtil,\n WaitForOption,\n WaitUntilOption,\n} from '@atomic-testing/core';\nimport { Page } from '@playwright/test';\n\nexport class PlaywrightInteractor implements Interactor {\n constructor(public readonly page: Page) {}\n\n async selectOptionValue(locator: PartLocator, values: string[]): Promise<void> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n await this.page.locator(cssLocator).selectOption(values);\n }\n\n async getInputValue(locator: PartLocator): Promise<Optional<string>> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n return this.page.locator(cssLocator).inputValue();\n }\n\n async getSelectValues(locator: PartLocator): Promise<Optional<readonly string[]>> {\n const optionLocator: PartLocator = byCssSelector('option:checked');\n const selectedOptionLocator = locatorUtil.append(locator, optionLocator);\n const cssLocator = await locatorUtil.toCssSelector(selectedOptionLocator, this);\n const allOptions = await this.page.locator(cssLocator).all();\n const values: string[] = [];\n for (const option of allOptions) {\n const value = await option.getAttribute('value');\n if (value != null) {\n values.push(value);\n }\n }\n return values;\n }\n\n async getSelectLabels(locator: PartLocator): Promise<Optional<readonly string[]>> {\n const optionLocator: PartLocator = byCssSelector('option:checked');\n const selectedOptionLocator = locatorUtil.append(locator, optionLocator);\n const cssLocator = await locatorUtil.toCssSelector(selectedOptionLocator, this);\n const allOptions = await this.page.locator(cssLocator).all();\n const labels: string[] = [];\n for (const option of allOptions) {\n const label = await option.textContent();\n if (label != null) {\n labels.push(label);\n }\n }\n return labels;\n }\n\n async getStyleValue(locator: PartLocator, propertyName: CssProperty): Promise<Optional<string>> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n const elLocator = this.page.locator(cssLocator);\n const value = await elLocator.evaluate((element, prop) => {\n return window.getComputedStyle(element).getPropertyValue(prop as string);\n }, propertyName);\n return value;\n }\n\n async enterText(locator: PartLocator, text: string, option?: Optional<Partial<EnterTextOption>>): Promise<void> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n if (!option?.append) {\n await this.page.locator(cssLocator).clear();\n }\n\n // If it is a date, time or datetime-local input, validate the date format\n const type = (await this.getAttribute(locator, 'type')) ?? '';\n if (dateUtil.isHtmlDateInputType(type)) {\n const result = dateUtil.validateHtmlDateInput(type, text);\n if (!result.valid) {\n throw new Error(\n `Invalid date format for type: ${type}, expected format: ${result.format}, example: ${result.example}`\n );\n }\n }\n await this.page.locator(cssLocator).fill(text);\n }\n\n async click(locator: PartLocator, option?: Partial<ClickOption>): Promise<void> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n await this.page.locator(cssLocator).click({ position: option?.position });\n }\n\n async hover(locator: PartLocator, option?: Partial<HoverOption>): Promise<void> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n await this.page.locator(cssLocator).hover({ position: option?.position });\n }\n\n async mouseMove(locator: PartLocator, option?: Partial<MouseMoveOption>): Promise<void> {\n await this.hover(locator, {\n position: option?.position,\n });\n await this.page.mouse.move(0, 0);\n }\n\n async mouseDown(locator: PartLocator, option?: Partial<MouseDownOption>): Promise<void> {\n await this.hover(locator, {\n position: option?.position,\n });\n await this.page.mouse.down();\n }\n\n async mouseUp(locator: PartLocator, option?: Partial<MouseUpOption>): Promise<void> {\n await this.hover(locator, {\n position: option?.position,\n });\n await this.page.mouse.up();\n }\n\n async mouseOver(locator: PartLocator, option?: Partial<HoverOption>): Promise<void> {\n return this.hover(locator, option);\n }\n\n async mouseOut(locator: PartLocator, _option?: Partial<MouseOutOption>): Promise<void> {\n await this.hover(locator, {\n position: {\n x: 0,\n y: 0,\n },\n });\n await this.page.mouse.move(-10, -10);\n }\n\n async mouseEnter(locator: PartLocator, _option?: Partial<MouseEnterOption>): Promise<void> {\n return this.hover(locator);\n }\n\n async mouseLeave(locator: PartLocator, _option?: Partial<MouseLeaveOption>): Promise<void> {\n return this.mouseOut(locator);\n }\n\n async focus(locator: PartLocator, _option: Partial<FocusOption>): Promise<void> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n return this.page.focus(cssLocator);\n }\n\n //#region wait conditions\n wait(ms: number): Promise<void> {\n return timingUtil.wait(ms);\n }\n\n async waitUntilComponentState(\n locator: PartLocator,\n option: Partial<Readonly<WaitForOption>> = defaultWaitForOption\n ): Promise<void> {\n return interactorUtil.interactorWaitUtil(locator, this, option);\n }\n\n waitUntil<T>(option: WaitUntilOption<T>): Promise<T> {\n return timingUtil.waitUntil(option);\n }\n //#endregion\n\n async getAttribute(locator: PartLocator, name: string, isMultiple: true): Promise<readonly string[]>;\n async getAttribute(locator: PartLocator, name: string, isMultiple: false): Promise<Optional<string>>;\n async getAttribute(locator: PartLocator, name: string): Promise<Optional<string>>;\n async getAttribute(\n locator: PartLocator,\n name: string,\n isMultiple?: boolean\n ): Promise<Optional<string> | readonly string[]> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n const elLocator = this.page.locator(cssLocator);\n if (isMultiple) {\n const locators = await elLocator.all();\n const values: string[] = [];\n for (const locator of locators) {\n const value = await locator.getAttribute(name);\n if (value != null) {\n values.push(value);\n }\n }\n return values;\n }\n const value = await elLocator.getAttribute(name);\n return value ?? undefined;\n }\n\n async getText(locator: PartLocator): Promise<Optional<string>> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n const text = await this.page.locator(cssLocator).textContent();\n return text ?? undefined;\n }\n\n async exists(locator: PartLocator): Promise<boolean> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n const count = await this.page.locator(cssLocator).count();\n return count > 0;\n }\n\n async isChecked(locator: PartLocator): Promise<boolean> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n const checked = await this.page.locator(cssLocator).isChecked();\n return checked;\n }\n\n async isDisabled(locator: PartLocator): Promise<boolean> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n const isDisabled = await this.page.locator(cssLocator).isDisabled();\n return isDisabled;\n }\n\n async isReadonly(locator: PartLocator): Promise<boolean> {\n const readonly = await this.getAttribute(locator, 'readonly');\n return readonly != null;\n }\n\n async isVisible(locator: PartLocator): Promise<boolean> {\n const exists = await this.exists(locator);\n if (!exists) {\n return false;\n }\n\n async function checkCssVisibility(\n prop: CssProperty,\n invisibleValue: string,\n interactor: PlaywrightInteractor\n ): Promise<boolean> {\n try {\n const value = await interactor.getStyleValue(locator, prop);\n return value !== invisibleValue;\n } catch (e) {\n // Element may disappear or detached while being checked because of animation\n // when it happens, an error is thrown. In this case, if indeed the element\n // is not visible, we return false. Otherwise, we re-throw the error.\n if ((await interactor.exists(locator)) === false) {\n return false;\n }\n throw e;\n }\n }\n\n if ((await checkCssVisibility('opacity', '0', this)) === false) {\n return false;\n }\n\n if ((await checkCssVisibility('visibility', 'hidden', this)) === false) {\n return false;\n }\n\n if ((await checkCssVisibility('display', 'none', this)) === false) {\n return false;\n }\n\n return true;\n }\n\n async hasCssClass(locator: PartLocator, className: string): Promise<boolean> {\n const classNames = await this.getAttribute(locator, 'class');\n if (classNames == null) {\n return false;\n }\n\n const names = classNames.split(/\\s+/);\n return names.includes(className);\n }\n\n async hasAttribute(locator: PartLocator, name: string): Promise<boolean> {\n const attrValue = await this.getAttribute(locator, name);\n return attrValue != null;\n }\n\n //#region\n async innerHTML(locator: PartLocator): Promise<string> {\n const cssLocator = await locatorUtil.toCssSelector(locator, this);\n return this.page.locator(cssLocator).innerHTML();\n }\n //#endregion\n\n clone(): Interactor {\n return new PlaywrightInteractor(this.page);\n }\n}\n","import { ScenePart, TestEngine } from '@atomic-testing/core';\nimport { Page } from '@playwright/test';\n\nimport { PlaywrightInteractor } from './PlaywrightInteractor';\n\nexport function createTestEngine<T extends ScenePart>(page: Page, partDefinitions: T): TestEngine<T> {\n const engine = new TestEngine([], new PlaywrightInteractor(page), {\n parts: partDefinitions,\n });\n\n return engine;\n}\n","import { ScenePart, TestEngine } from '@atomic-testing/core';\nimport { E2eTestInterface, E2eTestRunEnvironmentFixture, TestFrameworkMapper } from '@atomic-testing/test-runner';\nimport { expect, Page, test } from '@playwright/test';\n\nimport { createTestEngine } from './createTestEngine';\n\nexport async function goto(url: string): Promise<void>;\nexport async function goto(url: string, fixture: E2eTestRunEnvironmentFixture): Promise<void>;\nexport async function goto(url: string, fixture?: E2eTestRunEnvironmentFixture): Promise<void> {\n const page = fixture!.page as Page;\n await page.goto(url);\n}\n\nexport function playwrightGetTestEngine<T extends ScenePart>(\n scenePart: T,\n fixture: E2eTestRunEnvironmentFixture\n): TestEngine<T> {\n const page = fixture.page as Page;\n return createTestEngine(page, scenePart);\n}\n\nexport const playWrightTestFrameworkMapper: TestFrameworkMapper = {\n assertEqual: (a, b) => expect(a).toEqual(b),\n // @ts-expect-error - expect type is not compatible with the type of the test framework\n describe: test.describe,\n\n beforeEach: test.beforeEach,\n afterEach: test.afterEach,\n beforeAll: test.beforeAll,\n afterAll: test.afterAll,\n\n // @ts-expect-error - expect type is not compatible with the type of the test framework\n test: test,\n\n // @ts-expect-error - expect type is not compatible with the type of the test framework\n it: test,\n};\n\nexport function getTestRunnerInterface<T extends ScenePart>(): E2eTestInterface<T> {\n return {\n getTestEngine: playwrightGetTestEngine,\n goto,\n };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@atomic-testing/playwright",
3
- "version": "0.58.0",
3
+ "version": "0.59.0",
4
4
  "description": "Atomic Testing Playwright Adapter",
5
5
  "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
6
+ "module": "dist/index.mjs",
7
+ "typings": "dist/index.d.ts",
7
8
  "files": [
8
9
  "dist",
9
10
  "src"
@@ -17,8 +18,8 @@
17
18
  "directory": "packages/playwright"
18
19
  },
19
20
  "dependencies": {
20
- "@atomic-testing/core": "0.58.0",
21
- "@atomic-testing/test-runner": "0.58.0"
21
+ "@atomic-testing/core": "0.59.0",
22
+ "@atomic-testing/test-runner": "0.59.0"
22
23
  },
23
24
  "devDependencies": {
24
25
  "@playwright/test": "^1.51.1",
@@ -30,7 +31,7 @@
30
31
  "@playwright/test": ">=1.50.0"
31
32
  },
32
33
  "scripts": {
33
- "build": "tsc",
34
- "postbuild": "node ../../scripts/postBuild.mjs"
34
+ "build": "tsdown",
35
+ "check:type": "tsc --noEmit"
35
36
  }
36
37
  }
@@ -10,6 +10,9 @@ import {
10
10
  Interactor,
11
11
  interactorUtil,
12
12
  locatorUtil,
13
+ MouseEnterOption,
14
+ MouseLeaveOption,
15
+ MouseOutOption,
13
16
  MouseDownOption,
14
17
  MouseMoveOption,
15
18
  MouseUpOption,
@@ -19,7 +22,6 @@ import {
19
22
  WaitForOption,
20
23
  WaitUntilOption,
21
24
  } from '@atomic-testing/core';
22
- import { MouseEnterOption, MouseLeaveOption, MouseOutOption } from '@atomic-testing/core/src/interactor/MouseOption';
23
25
  import { Page } from '@playwright/test';
24
26
 
25
27
  export class PlaywrightInteractor implements Interactor {
@@ -1,39 +0,0 @@
1
- import { ClickOption, CssProperty, EnterTextOption, FocusOption, HoverOption, Interactor, MouseDownOption, MouseMoveOption, MouseUpOption, Optional, PartLocator, WaitForOption, WaitUntilOption } from '@atomic-testing/core';
2
- import { MouseEnterOption, MouseLeaveOption, MouseOutOption } from '@atomic-testing/core/src/interactor/MouseOption';
3
- import { Page } from '@playwright/test';
4
- export declare class PlaywrightInteractor implements Interactor {
5
- readonly page: Page;
6
- constructor(page: Page);
7
- selectOptionValue(locator: PartLocator, values: string[]): Promise<void>;
8
- getInputValue(locator: PartLocator): Promise<Optional<string>>;
9
- getSelectValues(locator: PartLocator): Promise<Optional<readonly string[]>>;
10
- getSelectLabels(locator: PartLocator): Promise<Optional<readonly string[]>>;
11
- getStyleValue(locator: PartLocator, propertyName: CssProperty): Promise<Optional<string>>;
12
- enterText(locator: PartLocator, text: string, option?: Optional<Partial<EnterTextOption>>): Promise<void>;
13
- click(locator: PartLocator, option?: Partial<ClickOption>): Promise<void>;
14
- hover(locator: PartLocator, option?: Partial<HoverOption>): Promise<void>;
15
- mouseMove(locator: PartLocator, option?: Partial<MouseMoveOption>): Promise<void>;
16
- mouseDown(locator: PartLocator, option?: Partial<MouseDownOption>): Promise<void>;
17
- mouseUp(locator: PartLocator, option?: Partial<MouseUpOption>): Promise<void>;
18
- mouseOver(locator: PartLocator, option?: Partial<HoverOption>): Promise<void>;
19
- mouseOut(locator: PartLocator, _option?: Partial<MouseOutOption>): Promise<void>;
20
- mouseEnter(locator: PartLocator, _option?: Partial<MouseEnterOption>): Promise<void>;
21
- mouseLeave(locator: PartLocator, _option?: Partial<MouseLeaveOption>): Promise<void>;
22
- focus(locator: PartLocator, _option: Partial<FocusOption>): Promise<void>;
23
- wait(ms: number): Promise<void>;
24
- waitUntilComponentState(locator: PartLocator, option?: Partial<Readonly<WaitForOption>>): Promise<void>;
25
- waitUntil<T>(option: WaitUntilOption<T>): Promise<T>;
26
- getAttribute(locator: PartLocator, name: string, isMultiple: true): Promise<readonly string[]>;
27
- getAttribute(locator: PartLocator, name: string, isMultiple: false): Promise<Optional<string>>;
28
- getAttribute(locator: PartLocator, name: string): Promise<Optional<string>>;
29
- getText(locator: PartLocator): Promise<Optional<string>>;
30
- exists(locator: PartLocator): Promise<boolean>;
31
- isChecked(locator: PartLocator): Promise<boolean>;
32
- isDisabled(locator: PartLocator): Promise<boolean>;
33
- isReadonly(locator: PartLocator): Promise<boolean>;
34
- isVisible(locator: PartLocator): Promise<boolean>;
35
- hasCssClass(locator: PartLocator, className: string): Promise<boolean>;
36
- hasAttribute(locator: PartLocator, name: string): Promise<boolean>;
37
- innerHTML(locator: PartLocator): Promise<string>;
38
- clone(): Interactor;
39
- }
@@ -1,287 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.PlaywrightInteractor = void 0;
13
- const core_1 = require("@atomic-testing/core");
14
- class PlaywrightInteractor {
15
- constructor(page) {
16
- this.page = page;
17
- }
18
- selectOptionValue(locator, values) {
19
- return __awaiter(this, void 0, void 0, function* () {
20
- const cssLocator = yield core_1.locatorUtil.toCssSelector(locator, this);
21
- yield this.page.locator(cssLocator).selectOption(values);
22
- });
23
- }
24
- getInputValue(locator) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- const cssLocator = yield core_1.locatorUtil.toCssSelector(locator, this);
27
- return this.page.locator(cssLocator).inputValue();
28
- });
29
- }
30
- getSelectValues(locator) {
31
- return __awaiter(this, void 0, void 0, function* () {
32
- const optionLocator = (0, core_1.byCssSelector)('option:checked');
33
- const selectedOptionLocator = core_1.locatorUtil.append(locator, optionLocator);
34
- const cssLocator = yield core_1.locatorUtil.toCssSelector(selectedOptionLocator, this);
35
- const allOptions = yield this.page.locator(cssLocator).all();
36
- const values = [];
37
- for (const option of allOptions) {
38
- const value = yield option.getAttribute('value');
39
- if (value != null) {
40
- values.push(value);
41
- }
42
- }
43
- return values;
44
- });
45
- }
46
- getSelectLabels(locator) {
47
- return __awaiter(this, void 0, void 0, function* () {
48
- const optionLocator = (0, core_1.byCssSelector)('option:checked');
49
- const selectedOptionLocator = core_1.locatorUtil.append(locator, optionLocator);
50
- const cssLocator = yield core_1.locatorUtil.toCssSelector(selectedOptionLocator, this);
51
- const allOptions = yield this.page.locator(cssLocator).all();
52
- const labels = [];
53
- for (const option of allOptions) {
54
- const label = yield option.textContent();
55
- if (label != null) {
56
- labels.push(label);
57
- }
58
- }
59
- return labels;
60
- });
61
- }
62
- getStyleValue(locator, propertyName) {
63
- return __awaiter(this, void 0, void 0, function* () {
64
- const cssLocator = yield core_1.locatorUtil.toCssSelector(locator, this);
65
- const elLocator = this.page.locator(cssLocator);
66
- const value = yield elLocator.evaluate((element, prop) => {
67
- return window.getComputedStyle(element).getPropertyValue(prop);
68
- }, propertyName);
69
- return value;
70
- });
71
- }
72
- enterText(locator, text, option) {
73
- return __awaiter(this, void 0, void 0, function* () {
74
- var _a;
75
- const cssLocator = yield core_1.locatorUtil.toCssSelector(locator, this);
76
- if (!(option === null || option === void 0 ? void 0 : option.append)) {
77
- yield this.page.locator(cssLocator).clear();
78
- }
79
- // If it is a date, time or datetime-local input, validate the date format
80
- const type = (_a = (yield this.getAttribute(locator, 'type'))) !== null && _a !== void 0 ? _a : '';
81
- if (core_1.dateUtil.isHtmlDateInputType(type)) {
82
- const result = core_1.dateUtil.validateHtmlDateInput(type, text);
83
- if (!result.valid) {
84
- throw new Error(`Invalid date format for type: ${type}, expected format: ${result.format}, example: ${result.example}`);
85
- }
86
- }
87
- yield this.page.locator(cssLocator).fill(text);
88
- });
89
- }
90
- click(locator, option) {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- const cssLocator = yield core_1.locatorUtil.toCssSelector(locator, this);
93
- yield this.page.locator(cssLocator).click({ position: option === null || option === void 0 ? void 0 : option.position });
94
- });
95
- }
96
- hover(locator, option) {
97
- return __awaiter(this, void 0, void 0, function* () {
98
- const cssLocator = yield core_1.locatorUtil.toCssSelector(locator, this);
99
- yield this.page.locator(cssLocator).hover({ position: option === null || option === void 0 ? void 0 : option.position });
100
- });
101
- }
102
- mouseMove(locator, option) {
103
- return __awaiter(this, void 0, void 0, function* () {
104
- yield this.hover(locator, {
105
- position: option === null || option === void 0 ? void 0 : option.position,
106
- });
107
- yield this.page.mouse.move(0, 0);
108
- });
109
- }
110
- mouseDown(locator, option) {
111
- return __awaiter(this, void 0, void 0, function* () {
112
- yield this.hover(locator, {
113
- position: option === null || option === void 0 ? void 0 : option.position,
114
- });
115
- yield this.page.mouse.down();
116
- });
117
- }
118
- mouseUp(locator, option) {
119
- return __awaiter(this, void 0, void 0, function* () {
120
- yield this.hover(locator, {
121
- position: option === null || option === void 0 ? void 0 : option.position,
122
- });
123
- yield this.page.mouse.up();
124
- });
125
- }
126
- mouseOver(locator, option) {
127
- return __awaiter(this, void 0, void 0, function* () {
128
- return this.hover(locator, option);
129
- });
130
- }
131
- mouseOut(locator, _option) {
132
- return __awaiter(this, void 0, void 0, function* () {
133
- yield this.hover(locator, {
134
- position: {
135
- x: 0,
136
- y: 0,
137
- },
138
- });
139
- yield this.page.mouse.move(-10, -10);
140
- });
141
- }
142
- mouseEnter(locator, _option) {
143
- return __awaiter(this, void 0, void 0, function* () {
144
- return this.hover(locator);
145
- });
146
- }
147
- mouseLeave(locator, _option) {
148
- return __awaiter(this, void 0, void 0, function* () {
149
- return this.mouseOut(locator);
150
- });
151
- }
152
- focus(locator, _option) {
153
- return __awaiter(this, void 0, void 0, function* () {
154
- const cssLocator = yield core_1.locatorUtil.toCssSelector(locator, this);
155
- return this.page.focus(cssLocator);
156
- });
157
- }
158
- //#region wait conditions
159
- wait(ms) {
160
- return core_1.timingUtil.wait(ms);
161
- }
162
- waitUntilComponentState(locator_1) {
163
- return __awaiter(this, arguments, void 0, function* (locator, option = core_1.defaultWaitForOption) {
164
- return core_1.interactorUtil.interactorWaitUtil(locator, this, option);
165
- });
166
- }
167
- waitUntil(option) {
168
- return core_1.timingUtil.waitUntil(option);
169
- }
170
- getAttribute(locator, name, isMultiple) {
171
- return __awaiter(this, void 0, void 0, function* () {
172
- const cssLocator = yield core_1.locatorUtil.toCssSelector(locator, this);
173
- const elLocator = this.page.locator(cssLocator);
174
- if (isMultiple) {
175
- const locators = yield elLocator.all();
176
- const values = [];
177
- for (const locator of locators) {
178
- const value = yield locator.getAttribute(name);
179
- if (value != null) {
180
- values.push(value);
181
- }
182
- }
183
- return values;
184
- }
185
- const value = yield elLocator.getAttribute(name);
186
- return value !== null && value !== void 0 ? value : undefined;
187
- });
188
- }
189
- getText(locator) {
190
- return __awaiter(this, void 0, void 0, function* () {
191
- const cssLocator = yield core_1.locatorUtil.toCssSelector(locator, this);
192
- const text = yield this.page.locator(cssLocator).textContent();
193
- return text !== null && text !== void 0 ? text : undefined;
194
- });
195
- }
196
- exists(locator) {
197
- return __awaiter(this, void 0, void 0, function* () {
198
- const cssLocator = yield core_1.locatorUtil.toCssSelector(locator, this);
199
- const count = yield this.page.locator(cssLocator).count();
200
- return count > 0;
201
- });
202
- }
203
- isChecked(locator) {
204
- return __awaiter(this, void 0, void 0, function* () {
205
- const cssLocator = yield core_1.locatorUtil.toCssSelector(locator, this);
206
- const checked = yield this.page.locator(cssLocator).isChecked();
207
- return checked;
208
- });
209
- }
210
- isDisabled(locator) {
211
- return __awaiter(this, void 0, void 0, function* () {
212
- const cssLocator = yield core_1.locatorUtil.toCssSelector(locator, this);
213
- const isDisabled = yield this.page.locator(cssLocator).isDisabled();
214
- return isDisabled;
215
- });
216
- }
217
- isReadonly(locator) {
218
- return __awaiter(this, void 0, void 0, function* () {
219
- const readonly = yield this.getAttribute(locator, 'readonly');
220
- return readonly != null;
221
- });
222
- }
223
- isVisible(locator) {
224
- return __awaiter(this, void 0, void 0, function* () {
225
- const exists = yield this.exists(locator);
226
- if (!exists) {
227
- return false;
228
- }
229
- function checkCssVisibility(prop, invisibleValue, interactor) {
230
- return __awaiter(this, void 0, void 0, function* () {
231
- try {
232
- const value = yield interactor.getStyleValue(locator, prop);
233
- return value !== invisibleValue;
234
- }
235
- catch (e) {
236
- // Element may disappear or detached while being checked because of animation
237
- // when it happens, an error is thrown. In this case, if indeed the element
238
- // is not visible, we return false. Otherwise, we re-throw the error.
239
- if ((yield interactor.exists(locator)) === false) {
240
- return false;
241
- }
242
- throw e;
243
- }
244
- });
245
- }
246
- if ((yield checkCssVisibility('opacity', '0', this)) === false) {
247
- return false;
248
- }
249
- if ((yield checkCssVisibility('visibility', 'hidden', this)) === false) {
250
- return false;
251
- }
252
- if ((yield checkCssVisibility('display', 'none', this)) === false) {
253
- return false;
254
- }
255
- return true;
256
- });
257
- }
258
- hasCssClass(locator, className) {
259
- return __awaiter(this, void 0, void 0, function* () {
260
- const classNames = yield this.getAttribute(locator, 'class');
261
- if (classNames == null) {
262
- return false;
263
- }
264
- const names = classNames.split(/\s+/);
265
- return names.includes(className);
266
- });
267
- }
268
- hasAttribute(locator, name) {
269
- return __awaiter(this, void 0, void 0, function* () {
270
- const attrValue = yield this.getAttribute(locator, name);
271
- return attrValue != null;
272
- });
273
- }
274
- //#region
275
- innerHTML(locator) {
276
- return __awaiter(this, void 0, void 0, function* () {
277
- const cssLocator = yield core_1.locatorUtil.toCssSelector(locator, this);
278
- return this.page.locator(cssLocator).innerHTML();
279
- });
280
- }
281
- //#endregion
282
- clone() {
283
- return new PlaywrightInteractor(this.page);
284
- }
285
- }
286
- exports.PlaywrightInteractor = PlaywrightInteractor;
287
- //# sourceMappingURL=PlaywrightInteractor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlaywrightInteractor.js","sourceRoot":"","sources":["../src/PlaywrightInteractor.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { ScenePart, TestEngine } from '@atomic-testing/core';
2
- import { Page } from '@playwright/test';
3
- export declare function createTestEngine<T extends ScenePart>(page: Page, partDefinitions: T): TestEngine<T>;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createTestEngine = createTestEngine;
4
- const core_1 = require("@atomic-testing/core");
5
- const PlaywrightInteractor_1 = require("./PlaywrightInteractor");
6
- function createTestEngine(page, partDefinitions) {
7
- const engine = new core_1.TestEngine([], new PlaywrightInteractor_1.PlaywrightInteractor(page), {
8
- parts: partDefinitions,
9
- });
10
- return engine;
11
- }
12
- //# sourceMappingURL=createTestEngine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTestEngine.js","sourceRoot":"","sources":["../src/createTestEngine.ts"],"names":[],"mappings":";;AAKA,4CAMC;AAXD,+CAA6D;AAG7D,iEAA8D;AAE9D,SAAgB,gBAAgB,CAAsB,IAAU,EAAE,eAAkB;IAClF,MAAM,MAAM,GAAG,IAAI,iBAAU,CAAC,EAAE,EAAE,IAAI,2CAAoB,CAAC,IAAI,CAAC,EAAE;QAChE,KAAK,EAAE,eAAe;KACvB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,7 +0,0 @@
1
- import { ScenePart, TestEngine } from '@atomic-testing/core';
2
- import { E2eTestInterface, E2eTestRunEnvironmentFixture, TestFrameworkMapper } from '@atomic-testing/test-runner';
3
- export declare function goto(url: string): Promise<void>;
4
- export declare function goto(url: string, fixture: E2eTestRunEnvironmentFixture): Promise<void>;
5
- export declare function playwrightGetTestEngine<T extends ScenePart>(scenePart: T, fixture: E2eTestRunEnvironmentFixture): TestEngine<T>;
6
- export declare const playWrightTestFrameworkMapper: TestFrameworkMapper;
7
- export declare function getTestRunnerInterface<T extends ScenePart>(): E2eTestInterface<T>;
@@ -1,47 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.playWrightTestFrameworkMapper = void 0;
13
- exports.goto = goto;
14
- exports.playwrightGetTestEngine = playwrightGetTestEngine;
15
- exports.getTestRunnerInterface = getTestRunnerInterface;
16
- const test_1 = require("@playwright/test");
17
- const createTestEngine_1 = require("./createTestEngine");
18
- function goto(url, fixture) {
19
- return __awaiter(this, void 0, void 0, function* () {
20
- const page = fixture.page;
21
- yield page.goto(url);
22
- });
23
- }
24
- function playwrightGetTestEngine(scenePart, fixture) {
25
- const page = fixture.page;
26
- return (0, createTestEngine_1.createTestEngine)(page, scenePart);
27
- }
28
- exports.playWrightTestFrameworkMapper = {
29
- assertEqual: (a, b) => (0, test_1.expect)(a).toEqual(b),
30
- // @ts-expect-error - expect type is not compatible with the type of the test framework
31
- describe: test_1.test.describe,
32
- beforeEach: test_1.test.beforeEach,
33
- afterEach: test_1.test.afterEach,
34
- beforeAll: test_1.test.beforeAll,
35
- afterAll: test_1.test.afterAll,
36
- // @ts-expect-error - expect type is not compatible with the type of the test framework
37
- test: test_1.test,
38
- // @ts-expect-error - expect type is not compatible with the type of the test framework
39
- it: test_1.test,
40
- };
41
- function getTestRunnerInterface() {
42
- return {
43
- getTestEngine: playwrightGetTestEngine,
44
- goto,
45
- };
46
- }
47
- //# sourceMappingURL=testRunnerAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testRunnerAdapter.js","sourceRoot":"","sources":["../src/testRunnerAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAQA,oBAGC;AAED,0DAMC;AAmBD,wDAKC;AAzCD,2CAAsD;AAEtD,yDAAsD;AAItD,SAAsB,IAAI,CAAC,GAAW,EAAE,OAAsC;;QAC5E,MAAM,IAAI,GAAG,OAAQ,CAAC,IAAY,CAAC;QACnC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;CAAA;AAED,SAAgB,uBAAuB,CACrC,SAAY,EACZ,OAAqC;IAErC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAY,CAAC;IAClC,OAAO,IAAA,mCAAgB,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC;AAEY,QAAA,6BAA6B,GAAwB;IAChE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,aAAM,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,uFAAuF;IACvF,QAAQ,EAAE,WAAI,CAAC,QAAQ;IAEvB,UAAU,EAAE,WAAI,CAAC,UAAU;IAC3B,SAAS,EAAE,WAAI,CAAC,SAAS;IACzB,SAAS,EAAE,WAAI,CAAC,SAAS;IACzB,QAAQ,EAAE,WAAI,CAAC,QAAQ;IAEvB,uFAAuF;IACvF,IAAI,EAAE,WAAI;IAEV,uFAAuF;IACvF,EAAE,EAAE,WAAI;CACT,CAAC;AAEF,SAAgB,sBAAsB;IACpC,OAAO;QACL,aAAa,EAAE,uBAAuB;QACtC,IAAI;KACL,CAAC;AACJ,CAAC"}