diff --git a/autotests/pageObjects/pages/E2edReportExample/E2edReportExample.ts b/autotests/pageObjects/pages/E2edReportExample/E2edReportExample.ts
index e28d4bc3..11bd9abc 100644
--- a/autotests/pageObjects/pages/E2edReportExample/E2edReportExample.ts
+++ b/autotests/pageObjects/pages/E2edReportExample/E2edReportExample.ts
@@ -14,8 +14,7 @@ import {TestRunButton} from './TestRunButton';
import type {Cookie, NavigationReturn, Selector, StringHeaders, Url} from 'e2ed/types';
type CustomPageParams =
- | {pageCookies?: readonly Cookie[]; pageRequestHeaders?: StringHeaders}
- | undefined;
+ {pageCookies?: readonly Cookie[]; pageRequestHeaders?: StringHeaders} | undefined;
/**
* The e2ed report example page.
diff --git a/logo.svg b/logo.svg
index abefd6be..0b3e37b7 100644
--- a/logo.svg
+++ b/logo.svg
@@ -1 +1 @@
-
+
diff --git a/package-lock.json b/package-lock.json
index 53ea722a..16a47126 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,7 +9,7 @@
"version": "0.21.8",
"license": "MIT",
"dependencies": {
- "@playwright/test": "1.60.0",
+ "@playwright/test": "1.62.1",
"create-locator": "0.0.27",
"get-modules-graph": "0.0.11",
"sort-json-keys": "1.0.3"
@@ -20,8 +20,8 @@
"e2ed-install-browsers": "bin/installBrowsers.js"
},
"devDependencies": {
- "@playwright/browser-chromium": "1.60.0",
- "@types/node": "25.9.1",
+ "@playwright/browser-chromium": "1.62.1",
+ "@types/node": "26.2.0",
"@typescript-eslint/eslint-plugin": "7.18.0",
"@typescript-eslint/parser": "7.18.0",
"assert-modules-support-case-insensitive-fs": "1.0.1",
@@ -30,10 +30,10 @@
"eslint-config-airbnb-base": "15.0.0",
"eslint-config-prettier": "10.1.8",
"eslint-plugin-import": "2.32.0",
- "eslint-plugin-simple-import-sort": "13.0.0",
+ "eslint-plugin-simple-import-sort": "14.0.0",
"eslint-plugin-typescript-sort-keys": "3.3.0",
"husky": "9.1.7",
- "prettier": "3.8.3",
+ "prettier": "3.9.6",
"typescript": "6.0.3"
},
"engines": {
@@ -183,32 +183,32 @@
}
},
"node_modules/@playwright/browser-chromium": {
- "version": "1.60.0",
- "resolved": "https://registry.npmjs.org/@playwright/browser-chromium/-/browser-chromium-1.60.0.tgz",
- "integrity": "sha512-0ND2pbNWKJYwhlA1LNaDC3DP2x7eguQkQF7Ga7XAlJV0AFieqYNRw/E+gaY9BpSFr1TYwfwXQv1bHq5AK9nbvA==",
+ "version": "1.62.1",
+ "resolved": "https://registry.npmjs.org/@playwright/browser-chromium/-/browser-chromium-1.62.1.tgz",
+ "integrity": "sha512-DU/t4TSqHvAc+uFMt972forQYqBTh/ul7lZ8U81HYGyxnf6vSPPz9NzuE0OR3x/elqvvGm+n4gcny+QSKT+FDw==",
"dev": true,
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.60.0"
+ "playwright-core": "1.62.1"
},
"engines": {
- "node": ">=18"
+ "node": ">=20"
}
},
"node_modules/@playwright/test": {
- "version": "1.60.0",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.60.0.tgz",
- "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==",
+ "version": "1.62.1",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.62.1.tgz",
+ "integrity": "sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==",
"license": "Apache-2.0",
"dependencies": {
- "playwright": "1.60.0"
+ "playwright": "1.62.1"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
- "node": ">=18"
+ "node": ">=20"
}
},
"node_modules/@rtsao/scc": {
@@ -231,13 +231,13 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "25.9.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz",
- "integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==",
+ "version": "26.2.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-26.2.0.tgz",
+ "integrity": "sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "undici-types": ">=7.24.0 <7.24.7"
+ "undici-types": "~8.3.0"
}
},
"node_modules/@types/semver": {
@@ -393,9 +393,9 @@
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
- "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
+ "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -704,9 +704,9 @@
"dev": true
},
"node_modules/brace-expansion": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
- "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
+ "version": "1.1.18",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
+ "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1333,9 +1333,9 @@
}
},
"node_modules/eslint-plugin-simple-import-sort": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-13.0.0.tgz",
- "integrity": "sha512-McAc+/Nlvcg4byY/CABGH8kqnefWBj8s3JA2okEtz8ixbECQgU46p0HkTUKa4YS7wvgGceimlc34p1nXqbWqtA==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-14.0.0.tgz",
+ "integrity": "sha512-NUJO0+XFCkk+o5EsAJruTgnfMEpeWrPWeJS15UVF60GgXmqz1BJ9/3hzlvG7lkL8Bubzos5cCLptThbFfPnSMQ==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@@ -2678,10 +2678,20 @@
"dev": true
},
"node_modules/js-yaml": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
- "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz",
+ "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
"license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
@@ -3041,33 +3051,33 @@
}
},
"node_modules/playwright": {
- "version": "1.60.0",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz",
- "integrity": "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==",
+ "version": "1.62.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz",
+ "integrity": "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==",
"license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.60.0"
+ "playwright-core": "1.62.1"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
- "node": ">=18"
+ "node": ">=20"
},
"optionalDependencies": {
"fsevents": "2.3.2"
}
},
"node_modules/playwright-core": {
- "version": "1.60.0",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz",
- "integrity": "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==",
+ "version": "1.62.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz",
+ "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==",
"license": "Apache-2.0",
"bin": {
"playwright-core": "cli.js"
},
"engines": {
- "node": ">=18"
+ "node": ">=20"
}
},
"node_modules/possible-typed-array-names": {
@@ -3090,9 +3100,9 @@
}
},
"node_modules/prettier": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz",
- "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==",
+ "version": "3.9.6",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.6.tgz",
+ "integrity": "sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==",
"dev": true,
"license": "MIT",
"bin": {
@@ -3293,9 +3303,9 @@
}
},
"node_modules/semver": {
- "version": "7.8.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz",
- "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==",
+ "version": "7.8.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -3801,9 +3811,9 @@
}
},
"node_modules/undici-types": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz",
- "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
+ "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==",
"dev": true,
"license": "MIT"
},
diff --git a/package.json b/package.json
index 9db3d112..14bddee3 100644
--- a/package.json
+++ b/package.json
@@ -25,14 +25,14 @@
"url": "git+https://github.com/joomcode/e2ed.git"
},
"dependencies": {
- "@playwright/test": "1.60.0",
+ "@playwright/test": "1.62.1",
"create-locator": "0.0.27",
"get-modules-graph": "0.0.11",
"sort-json-keys": "1.0.3"
},
"devDependencies": {
- "@playwright/browser-chromium": "1.60.0",
- "@types/node": "25.9.1",
+ "@playwright/browser-chromium": "1.62.1",
+ "@types/node": "26.2.0",
"@typescript-eslint/eslint-plugin": "7.18.0",
"@typescript-eslint/parser": "7.18.0",
"assert-modules-support-case-insensitive-fs": "1.0.1",
@@ -41,10 +41,10 @@
"eslint-config-airbnb-base": "15.0.0",
"eslint-config-prettier": "10.1.8",
"eslint-plugin-import": "2.32.0",
- "eslint-plugin-simple-import-sort": "13.0.0",
+ "eslint-plugin-simple-import-sort": "14.0.0",
"eslint-plugin-typescript-sort-keys": "3.3.0",
"husky": "9.1.7",
- "prettier": "3.8.3",
+ "prettier": "3.9.6",
"typescript": "6.0.3"
},
"peerDependencies": {
@@ -74,6 +74,7 @@
"lint": "npm run parallel lint:es lint:prettier lint:types",
"lint:es": "eslint --cache --cache-location=./node_modules/.cache/lint-es --cache-strategy=content --ext=.ts --max-warnings=0 --report-unused-disable-directives .",
"lint:prettier": "prettier --cache --cache-location=./node_modules/.cache/lint-prettier --cache-strategy=content --check --ignore-path=.gitignore . !autotests/fixtures/fullMocks !docs/index.html",
+ "lint:prettier:fix": "prettier --cache --cache-location=./node_modules/.cache/lint-prettier --cache-strategy=content --write --ignore-path=.gitignore . !autotests/fixtures/fullMocks !docs/index.html",
"lint:types": "npm run parallel lint:types:base lint:types:build",
"lint:types:base": "tsc --noEmit",
"lint:types:build": "if [ -f ./build/tsconfig.json ]; then tsc --noEmit --project ./build; else echo 'No build directory'; fi",
diff --git a/src/types/http/http.ts b/src/types/http/http.ts
index c5db23c0..04556962 100644
--- a/src/types/http/http.ts
+++ b/src/types/http/http.ts
@@ -41,15 +41,7 @@ export type MapOptions = Readonly<{
* HTTP method.
*/
export type Method =
- | 'CONNECT'
- | 'DELETE'
- | 'GET'
- | 'HEAD'
- | 'OPTIONS'
- | 'PATCH'
- | 'POST'
- | 'PUT'
- | 'TRACE';
+ 'CONNECT' | 'DELETE' | 'GET' | 'HEAD' | 'OPTIONS' | 'PATCH' | 'POST' | 'PUT' | 'TRACE';
/**
* Object with query (search) part of the url, or query string itself.
diff --git a/src/types/properties.ts b/src/types/properties.ts
index 06f8629d..a633431c 100644
--- a/src/types/properties.ts
+++ b/src/types/properties.ts
@@ -38,9 +38,7 @@ export type PrimitiveValue = bigint | boolean | number | string | symbol | null
* Property descriptor.
*/
export type PropertyDescriptor =
- | AccessorPropertyDescriptor
- | DataPropertyDescriptor
- | GenericPropertyDescriptor;
+ AccessorPropertyDescriptor | DataPropertyDescriptor | GenericPropertyDescriptor;
/**
* Property key.
diff --git a/src/utils/report/render/DragContainer.tsx b/src/utils/report/render/DragContainer.tsx
index 7eb638eb..1d91c202 100644
--- a/src/utils/report/render/DragContainer.tsx
+++ b/src/utils/report/render/DragContainer.tsx
@@ -11,8 +11,8 @@ export const DragContainer: JSX.Component = () => (
tabIndex={0}
aria-label="separator"
aria-orientation="vertical"
- aria-valuemax=""
- aria-valuemin="180"
- aria-valuenow=""
+ aria-valuemax="180"
+ aria-valuemin="0"
+ aria-valuenow="90"
>
);
diff --git a/src/utils/retry/truncateRetriesStateForLogs.ts b/src/utils/retry/truncateRetriesStateForLogs.ts
index 38b5cc01..a0511bb2 100644
--- a/src/utils/retry/truncateRetriesStateForLogs.ts
+++ b/src/utils/retry/truncateRetriesStateForLogs.ts
@@ -3,9 +3,7 @@ import {truncateArrayForLogs} from '../generalLog';
import type {RetriesState} from '../../types/internal';
type TruncatedFields =
- | 'failedTestNamesInLastRetry'
- | 'successfulTestRunNamesHash'
- | 'visitedTestRunEventsFileName';
+ 'failedTestNamesInLastRetry' | 'successfulTestRunNamesHash' | 'visitedTestRunEventsFileName';
type Return = Readonly<{
[Key in keyof RetriesState]: Key extends TruncatedFields ? object : RetriesState[Key];
diff --git a/src/utils/test/getRunTest.ts b/src/utils/test/getRunTest.ts
index 2a819f54..e550710d 100644
--- a/src/utils/test/getRunTest.ts
+++ b/src/utils/test/getRunTest.ts
@@ -21,7 +21,7 @@ import type {RunTest, Test, TestStaticOptions, TestUnit, UtcTimeInMs} from '../.
*/
export const getRunTest =
(test: Test): RunTest =>
- ({context, page, request}, testInfo): Promise => {
+ ({context, mount, page, request}, testInfo): Promise => {
const runTest = async (): Promise => {
const startTimeInMs = Date.now() as UtcTimeInMs;
const retryIndex = testInfo.retry + 1;
@@ -46,7 +46,7 @@ export const getRunTest =
retryIndex,
runId,
startTimeInMs,
- testController: {context, page, request},
+ testController: {context, mount, page, request},
testFn: test.testFn,
testStaticOptions,
};
diff --git a/src/utils/valueToString/valueToString.ts b/src/utils/valueToString/valueToString.ts
index 0db33772..4c2dcb8b 100644
--- a/src/utils/valueToString/valueToString.ts
+++ b/src/utils/valueToString/valueToString.ts
@@ -36,7 +36,7 @@ export const valueToString = (
return getStringTrimmedToMaxLength(valueAsString);
}
- for (let linesIndex = 0; linesIndex < lines.length; ) {
+ for (let linesIndex = 0; linesIndex < lines.length;) {
linesIndex = cutVerboseLinesFromPrintedLines(lines, linesIndex);
}