Skip to content

Commit 4aacbd0

Browse files
author
Oleksandr_Halichenko
committed
added capability to pass pageObject property as object
1 parent e37903a commit 4aacbd0

File tree

9 files changed

+342
-482
lines changed

9 files changed

+342
-482
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
1010
:pencil: - chore
1111
:microscope: - experimental
1212

13+
## [2.3.1]
14+
- :rocket: added capability to pass `pageObject` property as object
15+
- :beetle: fixed simple equal title
16+
1317
## [2.3.0]
1418
- :beetle: fixed publishing workflow
1519
- :rocket: added `locator.as` method to define top level components (like pages)

package-lock.json

Lines changed: 312 additions & 440 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@qavajs/playwright",
3-
"version": "2.3.0",
3+
"version": "2.3.1",
44
"description": "steps to interact with playwright",
55
"main": "./index.js",
66
"scripts": {
@@ -25,15 +25,15 @@
2525
},
2626
"homepage": "https://github.com/qavajs/playwright#readme",
2727
"devDependencies": {
28-
"@cucumber/cucumber": "^11.1.1",
28+
"@cucumber/cucumber": "^11.2.0",
2929
"@qavajs/memory": "^1.10.2",
30-
"@qavajs/playwright-runner-adapter": "^1.0.1",
30+
"@qavajs/playwright-runner-adapter": "^1.2.0",
3131
"@types/express": "^5.0.0",
32-
"@types/node": "^22.10.5",
33-
"electron": "^33.3.1",
32+
"@types/node": "^22.10.6",
33+
"electron": "^34.0.0",
3434
"express": "^4.21.2",
3535
"ts-node": "^10.9.2",
36-
"typescript": "^5.7.2"
36+
"typescript": "^5.7.3"
3737
},
3838
"dependencies": {
3939
"@playwright/test": "^1.49.1"

src/actions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ When('I hover over {locator}', async function (locator: Locator) {
165165
* @example I select '$dateOfBirth' option from 'Registration Form > Date Of Birth' dropdown
166166
*/
167167
When('I select {value} option from {locator} dropdown', async function (option: MemoryValue, select: Locator) {
168-
await select.selectOption({ label: await option.value()});
168+
await select.selectOption({ label: await option.value() });
169169
});
170170

171171
/**

src/memory.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { DataTable, When } from '@cucumber/cucumber';
22
import { dataTable2Object } from './utils/utils';
33
import { QavajsPlaywrightWorld } from './QavajsPlaywrightWorld';
44
import { Locator } from '@playwright/test';
5-
import {MemoryValue} from "./types";
5+
import { MemoryValue } from './types';
66

77
/**
88
* Save text of element to memory

src/pageObject.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ export class ChainItem {
9393
export function query(root: any, path: string) {
9494
const elements = path.split(/\s*>\s*/);
9595
const tokens = [];
96-
let currentComponent = new root();
96+
let currentComponent = typeof root === 'function' ? new root() : root;
9797
let currentAlias = 'page object root';
9898
for (const element of elements) {
9999
const groups = element.match(/^(?<alias>.+?)(?:\((?<argument>.+)\))?$/)?.groups as { alias: string, argument: string };

src/poDefine.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@ import { locator } from './pageObject';
1313
When('I define {value} as {value} locator', async function (selectorKey: MemoryValue, aliasKey: MemoryValue) {
1414
const selector = await selectorKey.value();
1515
const alias = (await aliasKey.value()).replace(/\s/g, '');
16-
this.config.pageObject.prototype[alias] = locator(selector);
16+
const pageObjectRef = this.config.pageObject.prototype ?? this.config.pageObject;
17+
pageObjectRef[alias] = locator(selector);
1718
});

src/validationExpect.ts

Lines changed: 13 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,36 +4,19 @@ export const expect = base.extend({
44
toSimpleEqual(actual: any, expected: any) {
55
const name = 'to equal';
66
const pass = actual == expected;
7-
if (pass) {
8-
return {
9-
expected,
10-
actual,
11-
name,
12-
message: () => `expected ${this.utils.printExpected(actual)} not to equal ${this.utils.printReceived(expected)}`,
13-
pass: true,
14-
};
15-
} else {
16-
return {
17-
expected,
18-
actual,
19-
name,
20-
message: () => `expected ${this.utils.printExpected(actual)} to equal ${this.utils.printReceived(expected)}`,
21-
pass: false,
22-
};
23-
}
7+
return {
8+
expected,
9+
actual,
10+
name,
11+
message: () => `expected ${this.utils.printExpected(actual)} ${pass ? 'not ': ''}to equal ${this.utils.printReceived(expected)}`,
12+
pass,
13+
};
2414
},
2515
toHaveType(actual: any, expected: string) {
2616
const pass = typeof actual == expected;
27-
if (pass) {
28-
return {
29-
message: () => `expected ${actual} to have type ${this.utils.printExpected(expected)}`,
30-
pass: true,
31-
};
32-
} else {
33-
return {
34-
message: () => `expected ${actual} not to have type ${this.utils.printReceived(expected)}`,
35-
pass: false,
36-
};
17+
return {
18+
message: () => `expected ${actual} ${pass ? 'not ': ''}to have type ${this.utils.printReceived(expected)}`,
19+
pass
3720
}
3821
},
3922
});
@@ -66,8 +49,8 @@ const aboveFn = (expectClause: any, ER: any) =>
6649
const belowFn = (expectClause: any, ER: any) =>
6750
(expected: any, actual: any, reverse: boolean, poll: boolean) => expectValue(expected, reverse, poll).toBeLessThan(toNumber(actual));
6851

69-
function expectValue(expected: any, reverse: boolean, poll: boolean) {
70-
const expectClause = poll ? expect.poll(expected) : expect(expected);
52+
function expectValue(expected: any, reverse: boolean, poll: boolean, message?: string) {
53+
const expectClause = poll ? expect.poll(expected, message) : expect(expected, message);
7154
return reverse ? expectClause.not : expectClause;
7255
}
7356

@@ -86,7 +69,7 @@ function toRegexp(r: string | RegExp): RegExp {
8669
const expects = {
8770
[validations.EQUAL]:
8871
//@ts-ignore
89-
(expected: any, actual: any, reverse: boolean, poll: boolean) => expectValue(expected, reverse, poll).toSimpleEqual(actual),
72+
(expected: any, actual: any, reverse: boolean, poll: boolean) => expectValue(expected, reverse, poll, 'expect.toEqual').toSimpleEqual(actual),
9073
[validations.STRICTLY_EQUAL]:
9174
(expected: any, actual: any, reverse: boolean, poll: boolean) => expectValue(expected, reverse, poll).toEqual(actual),
9275
[validations.DEEPLY_EQUAL]:

test-e2e/config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export default {
88
'test-e2e/step_definitions/*.ts'
99
],
1010
memory: new Memory(),
11-
pageObject: App
11+
pageObject: new App()
1212
}
1313

1414
export const electron = {
@@ -19,5 +19,5 @@ export const electron = {
1919
'test-e2e/step_definitions/*.ts'
2020
],
2121
memory: new Memory(),
22-
pageObject: App
22+
pageObject: new App()
2323
}

0 commit comments

Comments
 (0)