Skip to content

Commit 37b8679

Browse files
authored
Merge pull request #123 from joomcode/feat/improve-html-report
fix: some errors in new HTLM report
2 parents 5d5696d + fa8876b commit 37b8679

46 files changed

Lines changed: 378 additions & 223 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

autotests/pageObjects/pages/E2edReportExample/E2edReportExample.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {setPageCookies, setPageRequestHeaders} from 'autotests/context';
66
import {E2edReportExample as E2edReportExampleRoute} from 'autotests/routes/pageRoutes';
77
import {locator} from 'autotests/selectors';
88
import {Page} from 'e2ed';
9+
import {click} from 'e2ed/actions';
910
import {setReadonlyProperty} from 'e2ed/utils';
1011

1112
import {TestRunButton} from './TestRunButton';
@@ -65,7 +66,7 @@ export class E2edReportExample extends Page<CustomPageParams> {
6566
* List of test runs of retry.
6667
*/
6768
get testRunsList(): Selector {
68-
return locator('column1');
69+
return locator('column-2');
6970
}
7071

7172
/**
@@ -81,6 +82,10 @@ export class E2edReportExample extends Page<CustomPageParams> {
8182
}
8283
}
8384

85+
async clickLogo(): Promise<void> {
86+
await click(this.header, {position: {x: 30, y: 30}});
87+
}
88+
8489
getRoute(): E2edReportExampleRoute {
8590
return new E2edReportExampleRoute();
8691
}

autotests/tests/e2edReportExample/browserData.ts

Lines changed: 53 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -10,50 +10,56 @@ import {
1010
waitForInterfaceStabilization,
1111
} from 'e2ed/actions';
1212

13-
test('correctly read data from browser', {meta: {testId: '14'}}, async () => {
14-
await navigateToPage(E2edReportExample);
15-
16-
await createClientFunction(() => {
17-
console.error('error');
18-
console.info('info');
19-
console.log('log');
20-
console.warn('warning');
21-
22-
setTimeout(() => {
23-
throw new Error('foo');
24-
}, 100);
25-
})();
26-
27-
const consoleMessages = getBrowserConsoleMessages();
28-
const columnNumber = 12;
29-
const url = '';
30-
31-
const consoleMessagesWithoutDate = consoleMessages.map(
32-
({dateTimeInIso: _, ...messageWithoutDate}) => messageWithoutDate,
33-
);
34-
35-
await expect(consoleMessagesWithoutDate, 'getBrowserConsoleMessages read all of messages').eql([
36-
{args: ['error'], location: {columnNumber, lineNumber: 3, url}, text: 'error', type: 'error'},
37-
{args: ['info'], location: {columnNumber, lineNumber: 4, url}, text: 'info', type: 'info'},
38-
{args: ['log'], location: {columnNumber, lineNumber: 5, url}, text: 'log', type: 'log'},
39-
{
40-
args: ['warning'],
41-
location: {columnNumber, lineNumber: 6, url},
42-
text: 'warning',
43-
type: 'warning',
44-
},
45-
]);
46-
47-
const jsErrors = getBrowserJsErrors();
48-
49-
await expect(
50-
jsErrors.length,
51-
'getBrowserJsErrors read zero JS errors when there are no errors',
52-
).eql(0);
53-
54-
await waitForInterfaceStabilization(100);
55-
56-
await expect(jsErrors.length, 'getBrowserJsErrors read all JS errors').eql(1);
57-
58-
await expect(String(jsErrors[0]?.error), 'getBrowserJsErrors read all JS errors').contains('foo');
59-
});
13+
test(
14+
'correctly read data from browser',
15+
{meta: {testId: '14'}, viewportHeight: 1200, viewportWidth: 1600},
16+
async () => {
17+
await navigateToPage(E2edReportExample);
18+
19+
await createClientFunction(() => {
20+
console.error('error');
21+
console.info('info');
22+
console.log('log');
23+
console.warn('warning');
24+
25+
setTimeout(() => {
26+
throw new Error('foo');
27+
}, 100);
28+
})();
29+
30+
const consoleMessages = getBrowserConsoleMessages();
31+
const columnNumber = 12;
32+
const url = '';
33+
34+
const consoleMessagesWithoutDate = consoleMessages.map(
35+
({dateTimeInIso: _, ...messageWithoutDate}) => messageWithoutDate,
36+
);
37+
38+
await expect(consoleMessagesWithoutDate, 'getBrowserConsoleMessages read all of messages').eql([
39+
{args: ['error'], location: {columnNumber, lineNumber: 3, url}, text: 'error', type: 'error'},
40+
{args: ['info'], location: {columnNumber, lineNumber: 4, url}, text: 'info', type: 'info'},
41+
{args: ['log'], location: {columnNumber, lineNumber: 5, url}, text: 'log', type: 'log'},
42+
{
43+
args: ['warning'],
44+
location: {columnNumber, lineNumber: 6, url},
45+
text: 'warning',
46+
type: 'warning',
47+
},
48+
]);
49+
50+
const jsErrors = getBrowserJsErrors();
51+
52+
await expect(
53+
jsErrors.length,
54+
'getBrowserJsErrors read zero JS errors when there are no errors',
55+
).eql(0);
56+
57+
await waitForInterfaceStabilization(100);
58+
59+
await expect(jsErrors.length, 'getBrowserJsErrors read all JS errors').eql(1);
60+
61+
await expect(String(jsErrors[0]?.error), 'getBrowserJsErrors read all JS errors').contains(
62+
'foo',
63+
);
64+
},
65+
);

autotests/tests/internalTypeTests/selectors.skip.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,18 @@ import type {Selector} from 'e2ed/types';
44

55
// @ts-expect-error: wrong number of arguments
66
htmlElementSelector.findByTestId();
7-
// @ts-expect-error: wrong type of arguments
8-
htmlElementSelector.findByTestId(0);
7+
// ok
8+
htmlElementSelector.filterByTestId(0);
9+
// ok
10+
htmlElementSelector.findByTestId(true);
11+
// ok
12+
htmlElementSelector.filterByTestId(undefined);
13+
// ok
14+
htmlElementSelector.filterByTestId(null);
15+
// ok
16+
htmlElementSelector.findByTestId(1, 2, 2);
17+
// ok
18+
htmlElementSelector.filterByTestId('foo', 'bar', 'baz');
919
// ok
1020
htmlElementSelector.findByTestId('id') satisfies Selector;
1121
// ok

autotests/tests/switchingPagesForRequests.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import {E2edReportExample} from 'autotests/pageObjects/pages';
66
import {GetUsers} from 'autotests/routes/apiRoutes';
77
import {expect} from 'e2ed';
88
import {
9-
click,
109
navigateToPage,
1110
switchToTab,
1211
waitForNewTab,
@@ -54,7 +53,7 @@ test(
5453
await waitForTimeout(maxNumberOfRequests * 333);
5554

5655
const npmPageTab = await waitForNewTab(async () => {
57-
await click(reportPage.header);
56+
await reportPage.clickLogo();
5857
});
5958

6059
await switchToTab(npmPageTab);

autotests/tests/switchingPagesForResponses.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import {E2edReportExample} from 'autotests/pageObjects/pages';
66
import {GetUsers} from 'autotests/routes/apiRoutes';
77
import {expect} from 'e2ed';
88
import {
9-
click,
109
navigateToPage,
1110
switchToTab,
1211
waitForNewTab,
@@ -54,7 +53,7 @@ test(
5453
await waitForTimeout(maxNumberOfRequests * 333);
5554

5655
const npmPageTab = await waitForNewTab(async () => {
57-
await click(reportPage.header);
56+
await reportPage.clickLogo();
5857
});
5958

6059
await switchToTab(npmPageTab);

package-lock.json

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

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@
2525
"url": "git+https://github.com/joomcode/e2ed.git"
2626
},
2727
"dependencies": {
28-
"@playwright/test": "1.56.0",
28+
"@playwright/test": "1.57.0",
2929
"create-locator": "0.0.27",
3030
"get-modules-graph": "0.0.11",
3131
"sort-json-keys": "1.0.3"
3232
},
3333
"devDependencies": {
34-
"@playwright/browser-chromium": "1.56.0",
35-
"@types/node": "24.7.0",
34+
"@playwright/browser-chromium": "1.57.0",
35+
"@types/node": "24.10.1",
3636
"@typescript-eslint/eslint-plugin": "7.18.0",
3737
"@typescript-eslint/parser": "7.18.0",
3838
"assert-modules-support-case-insensitive-fs": "1.0.1",
@@ -44,7 +44,7 @@
4444
"eslint-plugin-simple-import-sort": "12.1.1",
4545
"eslint-plugin-typescript-sort-keys": "3.3.0",
4646
"husky": "9.1.7",
47-
"prettier": "3.6.2",
47+
"prettier": "3.7.4",
4848
"typescript": "5.9.3"
4949
},
5050
"peerDependencies": {

src/actions/blur.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import {LogEventType} from '../constants/internal';
2+
import {log} from '../utils/log';
3+
4+
import type {Locator} from '@playwright/test';
5+
6+
import type {Selector} from '../types/internal';
7+
8+
type Options = Parameters<Locator['blur']>[0];
9+
10+
/**
11+
* Blur an element.
12+
*/
13+
export const blur = async (selector: Selector, options: Options = {}): Promise<void> => {
14+
log('Blur an element', {...options, selector}, LogEventType.InternalAction);
15+
16+
await selector.getPlaywrightLocator().blur(options);
17+
};

0 commit comments

Comments
 (0)