| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| @e2e-dev_web@0.13.0 source code.tar.gz | < 9 hours ago | 4.6 MB | |
| @e2e-dev_web@0.13.0 source code.zip | < 9 hours ago | 5.4 MB | |
| README.md | < 9 hours ago | 6.0 kB | |
| Totals: 3 Items | 10.0 MB | 0 | |
Minor Changes
- #790
0d1ed15Thanks @okwasniewski! - Breaking: e2e and every@e2e-devpackage now need Node.js 22.22.3 or newer on Node.js 22, or 24.8.0 or newer (engines.nodeis^22.22.3 || >=24.8.0). Node.js 22.12 through 22.22.2, 23, and 24.0 through 24.7 are no longer supported, and the CLI refuses to start on them, naming the versions to upgrade to. Those releases fail when a CommonJS file a test imports requires TypeScript through the new loader'smodule.registerHooks(nodejs/node#59679 fixed it in 22.22.3 and 24.8.0).
e2e now loads TypeScript with its own loader, built on oxc, instead of tsx. tsx brought in esbuild, whose postinstall script made every pnpm install on pnpm 11 and later fail with ERR_PNPM_IGNORED_BUILDS until the project approved the build; nothing e2e installs runs an install script now. Config and tests load as before: ESM whatever package.json says, ./x.js and ./x resolve to x.ts and ./x.jsx to x.tsx, directory index imports, tsconfig paths and baseUrl, workspace packages exporting .ts source, JSX in .tsx and .jsx, enums, namespaces, experimentalDecorators, and source-mapped stack traces. JSON imported without with { type: 'json' } still loads. A test file whose name holds %, #, or a space now collects with its source location instead of failing with "URI malformed" or losing the location. Each file reads its nearest tsconfig.json rather than the one in the working directory. What changes: import statements in a .cts file are no longer compiled into require calls (write import x = require()); standard decorators without experimentalDecorators, auto-accessors, and ES module import and value export declarations in .cts are refused with their line (import type, export type, import x = require(), and export = work); the CLI refuses the Bun (bun --bun) and Deno runtimes (install with any package manager, run on Node.js); a type imported without import type that stays in the output (a decorated member's type under emitDecoratorMetadata) fails to load, with an error naming the import; a .ts file a CommonJS file requires runs as an ES module like every other .ts, so one written with module.exports needs the .cts extension; and an import written in a JavaScript file resolves as Node.js resolves it, without TypeScript's extension rules or tsconfig paths. TypeScript inside an installed package compiles without the project's tsconfig.json.
- #840
b33398fThanks @Mohit20057! -screen.swipe({ from, to, duration })adds an optionaldurationfor path swipes, controlling how long the gesture takes in milliseconds.
Patch Changes
-
#803
f2f9a53Thanks @fecolinhares! - A headless run no longer downloads the full Chromium when the headless shell is installed, and the install no longer removes other browsers in the cache. SetPLAYWRIGHT_SKIP_BROWSER_GC=0to restore cleanup. -
#860
60bf04dThanks @okwasniewski! -browser.evaluateevaluates a string as an expression:browser.evaluate('document.title')andbrowser.evaluate('(() => document.title)()')return the title instead of failing withEVALUATE_FAILED: ... is not a function. A string that evaluates to a function, such as'() => document.title', is still called with the argument. -
#859
432e9bfThanks @okwasniewski! - An action whose locator gains a second match just before it runs, such as a screen transition that briefly shows the old and new page together, no longer fails withENGINE_FAILUREand a Playwright strict mode violation. The locator resolves again: two matches still fail withLOCATOR_AMBIGUOUS, and a duplicate that went away lets the action run. A drag whose drop target gains a second match after the press fails withACTION_FAILEDand is not repeated. -
#891
a0e5142Thanks @rudycelekli! - Infer scope-less table headers from neighboring data cells, matching native row headers in semantic observations. -
#828
c83b86fThanks @okwasniewski! - A page whose script never yields no longer holds a web test until its test timeout: a tap, a locate, or a navigation on it now fails withACTION_FAILEDat its action or navigation timeout, also while a trace records. A tap or keystroke cut off that way may have reached the page and is never repeated by a replay.expect(browser)matchers on such a page end at their own timeout instead of the action timeout. -
#913
7c158eeThanks @okwasniewski! - Requirese2e0.18.0 or later. With an older runner the engine failed to load, or a headed run failed to launch the browser.