You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(deps): update other dependencies (minor) - #718
Fix CSS order autofix leaving comments behind when reordering properties (issue #14)
Leading // and /* */ comment blocks directly above a property now move together with it during autofixing
Trailing comments on the property's own line also move with the property
A comment separated from a property by a blank line is treated as block-level documentation and stays in place; blank lines between properties are left untouched
Applies to all shared-fixer ordering rules: alphabetical-order, concentric-order, custom-order, and the @font-face order enforcer
Add ignoreReferenced option to no-empty-style-blocks (issue #13)
When enabled, empty style declarations that are exported or still referenced elsewhere (e.g. intentional
class-name hooks used in globalStyle() selectors) are no longer reported at all
Genuinely unused empty declarations are still reported and auto-removed
Property-level detections (empty selectors, variant values, @media/@supports objects) remain active
Default behavior unchanged: exported/referenced empty declarations are still reported, just without an autofix
New page.webmcp and frame.webmcp give access to the tools that a page registers through the experimental WebMCP browser API, so you can test them like any other part of your app:
New style option takes CSS declarations for the point marker, the target highlight and the action title. It replaces the fontSize option, which is now deprecated.
The cursor stays visible at the last action point, survives navigations and travels along a natural, eased path.
Videos are encoded with VP9 instead of VP8, which takes less CPU and produces smaller files of the same or better
quality.
New testProject.default option keeps a project in the config without running it by default. You can configure every browser you care about, and let a plain npx playwright test run just your favourite one:
npx playwright test# runs chromium only
npx playwright test --project=firefox # runs firefox
npx playwright test --project="*"# runs all three, for example on CI
New --shuffle command line option schedules tests in a random order, which helps to find tests that accidentally depend on each other.
npx playwright test --shuffle
# Running 42 tests using 4 workers, shuffle seed 271828182# ...# Pass the seed to reproduce the same order.
npx playwright test --shuffle 271828182
Relative locators such as locator.nth() or locator.first() are resolved inside each parent
separately, which makes column-like queries straightforward:
// The third cell of every row, not the third cell in the table.constthirdColumn=page.getByRole('cell').nth(2).within(page.getByRole('row'));awaitexpect(thirdColumn).toHaveText(['Apple','Banana','Cherry']);
New option signCount sets the initial signature counter of a virtual credential. credentials.create() and credentials.get() return the current signCount, and it is saved and restored together with the credentials in the storage state.
New fullConfig.filteredProjects lists the projects that were selected to run after applying the --project filter. It is available in global setup and reporters.
screen property is now forwarded from the device descriptors. If you use ...devices['Desktop Chrome'] and alike, window.screen and media queries now see the emulated screen size. You can opt-out by explicitly setting screen to undefined:
JSX in your test files now follows your tsconfig.json. Playwright compiles JSX in test files according to the jsx, jsxFactory, jsxFragmentFactory and jsxImportSourcetsconfig options, and defaults to the automatic runtime from react/jsx-runtime.
--update-snapshots=missing now passes the test run. Tests that only create missing snapshots now pass in the 'missing' mode of testConfig.updateSnapshots, so that CI can generate new snapshots and verify the existing ones in a single run. The mode used when the option is not specified is now called 'default' and behaves as before: missing snapshots are written and the test fails.
Elements inside hidden iframes are considered hidden. Elements inside an iframe that is not visible, for example with visibility: hidden, are now considered hidden by actions, locator.isVisible() and expect(locator).toBeVisible().
Browser Versions
Chromium 156.0.8078.4
Mozilla Firefox 157.0
WebKit 27.2
This version was also tested against the following stable channels:
Tests that access a shared resource — an external service, a global account setting — can now declare a named lock.
Tests that share a lock name never run concurrently, across files, workers and projects, while
everything else keeps running in parallel:
test('update user settings',{lock: 'user-settings'},async({ page })=>{// never runs at the same time as other tests holding 'user-settings'});
A test can hold multiple locks, and test.describe() accepts a lock for the whole group.
Learn more about test locks.
🪟 Locate across frames
page.frameLocator() and frame.frameLocator() called without a selector search in any frame of the
subtree, so you no longer need to locate the iframe first:
// Finds the button in any frame on the page.awaitpage.frameLocator().getByRole('button').click();
The rest of the locator resolves inside a single frame, just like a regular locator, and an error is thrown when it
matches elements in several frames.
👁️ Visible-only locators
New locator.visible() returns a locator that matches only visible elements. It is the recommended
replacement for the :visible CSS pseudo-class:
awaitpage.locator('button').visible().click();
🧾 Step params and subtitles
Steps now carry structured data for reporters. Playwright API steps report the target locator and call arguments,
and test.step() accepts subtitle and params options for your own steps:
Reporters receive them via testStep.subtitle and testStep.params. For Playwright API
steps, the subtitle is the locator or the navigation url — for example, Click with subtitle getByRole('button').
Both are rendered next to the step title in the trace viewer and the HTML report.
🖼️ Aria and screen snapshots in traces
The snapshots option of tracing.start() and the testOptions.trace fixture option now accept an
object selecting what to capture on every action:
With aria and screen snapshots recorded, the new Display Aria mode in the trace viewer shows the action screenshot
side by side with the aria snapshot, and hovering an aria node highlights it on the screenshot.
New APIs
Browser and Context
httpCredentials now also accepts an array of credentials. The first entry matching the request origin is used, and entries without an origin match any request.
New option opfs includes the origin private file system in the storage state, so it can be persisted and restored into later contexts.
New --add-reporter command line option appends a reporter on top of the ones configured in playwright.config, instead of replacing them like --reporter does.
New omitTags option for the list, line, dot, github and junit reporters suppresses the tags that are automatically appended to test titles.
Command line
npx playwright install --no-remove keeps the browsers of other Playwright installations instead of removing them.
npx playwright codegen --http-credentials records against pages behind HTTP authentication.
Miscellaneous
New built-in perfetto reporter writes a Trace Event Format file for the Perfetto UI or chrome://tracing, rendering the test run as a timeline with a lane per worker.
The HTML report renders a duration waterfall next to test steps.
Announcements
⚠️ The experimental @playwright/experimental-ct-react, @playwright/experimental-ct-react17 and @playwright/experimental-ct-vue packages will no longer be updated. Follow the migration guide to move to the stories model introduced in 1.62. Story ids passed to fixtures.mount() can now be typed through the generated Stories registry.
⚠️ Ubuntu 20.04 is not supported anymore.
🐧 On Linux arm64, Playwright now downloads the Chrome for Testing build of Chromium, the same build used on all other platforms.
Browser Versions
Chromium 153.0.8010.12
Mozilla Firefox 155.0
WebKit 26.6
This version was also tested against the following stable channels:
Added support for multiple aria-describedby attributes.
Fixed nested, portalled layers being unusable inside a modal layer. A non-modal popover rendered inside a modal Dialog previously broke some user interactions because the modal layer's trapped FocusScope reclaimed focus, and its RemoveScroll only allowed scrolling within the modal content.
Allow explicit undefined for all optional types for compatibility with TypeScript's exactOptionalPropertyTypes flag.
Fixed bugs in form-nested control components where a user-driven change was treated as programmatic in some cases, preventing bubbled event handlers from being called.
Fixed a bug where a focused element inside Tabs.Content did not fire a blur event before the tab switched. Tabs.Trigger now moves focus before the tab's state change.
es-toolkit/compat now runs on Node.js 6 and ES2015 environments without
transpilation or polyfills. ([#2097], [#2161])
Fixed deepFreeze to freeze symbol and non-enumerable properties. ([#2143])
Fixed Semaphore to keep release fast when many tasks are waiting. ([#2149])
Fixed DeepPartial and DeepReadonly to preserve branded primitive types. ([#2074])
Fixed the Merge type to keep the input type when merging a type with itself or a
narrower type, and to use the source type when a defined source replaces a nullable
or primitive value. ([#2148], [#2155])
Fixed the fpintersectionBy to match each mapped value at most once in lazy
pipes. ([#2146])
The following change results or types that v1.52.0 produced, so review them if you
relied on the previous behavior.
dedent now leaves interpolated values out of the indentation calculation ([#2099]),
and throws a TypeError for a malformed template literal, like String.dedent ([#2100]).
deburr now keeps letters of non-Latin scripts as they are. ([#2124])
orderBy and sortBy now sort NaN in a consistent position. ([#2133])
once now calls the function with the caller's this. ([#2069])
findKey and mapKeys now type keys like Object.keys, so numeric keys are
strings. ([#2077], [#2156])
The fphead, last, maxBy, and minBy now always return T | undefined.
([#2113])
The following bring es-toolkit/compat closer to Lodash. Behavior for the affected
edge cases now matches Lodash, so results may differ if you relied on the previous output.
Fixed compat/add, compat/subtract, compat/multiply, and compat/divide to
match Lodash on null operands. ([#2056])
Fixed compat/ceil, compat/floor, and compat/round to coerce arguments like
Lodash. ([#2064])
Fixed compat/toString to read sparse array holes as undefined. ([#2091])
Fixed compat/dropWhile, compat/dropRightWhile, and compat/some to normalize
the predicate. ([#2072])
Fixed compat/countBy to return a plain object. ([#2090])
Fixed compat/pull, compat/pullAll, compat/pullAllBy, and compat/remove to
handle nullish inputs. ([#2095])
Fixed compat/xorBy and compat/xorWith to ignore the iteratee and comparator for
a single array. ([#2098])
Fixed compat/reduce and compat/reduceRight to resolve the iteratee like Lodash,
and compat/forEach, compat/forEachRight, compat/forIn, compat/forInRight, compat/forOwn, and compat/forOwnRight to treat a non-function iteratee as identity. ([#2101], [#2158])
Fixed compat/words to match titlecase letters, emoji sequences, and non-ASCII
numerals and symbols, and to keep combining marks attached to their letter.
([#2102], [#2103], [#2110])
Fixed compat/unionWith to pass comparator arguments in Lodash's order. ([#2114])
Fixed compat/groupBy, compat/maxBy, and compat/minBy to call the iteratee
with only the element. ([#2122])
Fixed compat/deburr to only deburr Latin letters. ([#2123])
Fixed compat/truncate to escape a string separator. ([#2130])
Fixed compat/cloneDeep and compat/cloneDeepWith to keep errors uncloned, and compat/isMatch and compat/matches to compare errors like Lodash. ([#2159])
Fixed compat/startCase to only uppercase the first letter of each word. ([#2160])
Exported the PropertyPath type from es-toolkit/compat. ([#2145])
Reduced the CommonJS bundle size of compat/every and compat/findLastIndex. ([#2162])
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
^1.17.0→^1.18.1^1.132.0→^1.142.0^0.42.0→^0.46.00.147.0→0.155.0^1.62.1→^1.64.1^1.1.20→^1.2.1^1.1.23→^1.3.1^1.4.7→^1.5.1^1.1.21→^1.2.1^24.13.3→^24.19.2^22.19.20→^22.20.5^10.5.4→^10.6.1^1.52.0→^1.53.0>=9.39.5→>=10.13.0^2.10.12→^2.11.10^30.4.2→^30.5.2^1.2.3→^1.4.424→24.22.1>=24→>=24.22.1>=20→>=20.20.2^1.62.1→^1.64.111.21.0→11.28.8^1.1.4→^1.2.15^0.27.14→^0.28.8^0.27.14→^0.28.8^1.102.0→^1.106.1^2.10.12→^2.11.10^8.65.0→^8.72.0^4.149.0→^4.152.0Release Notes
antebudimir/eslint-plugin-vanilla-extract (@antebudimir/eslint-plugin-vanilla-extract)
v1.18.1Compare Source
//and/* */comment blocks directly above a property now move together with it during autofixingalphabetical-order,concentric-order,custom-order, and the@font-faceorder enforcerv1.18.0Compare Source
ignoreReferencedoption tono-empty-style-blocks(issue #13)class-name hooks used in
globalStyle()selectors) are no longer reported at all@media/@supportsobjects) remain activev1.17.1Compare Source
no-empty-style-blocksautofix removing emptystyle({})declarations that are still referenced elsewhere (issue #13).globalStyle()selectors.figma/plugin-typings (@figma/plugin-typings)
v1.142.0Compare Source
v1.141.0Compare Source
v1.140.0Compare Source
v1.139.0Compare Source
v1.138.0Compare Source
v1.137.0Compare Source
v1.136.0Compare Source
v1.135.0Compare Source
figma/rest-api-spec (@figma/rest-api-spec)
v0.46.0Compare Source
v0.45.0Compare Source
v0.44.0Compare Source
v0.43.0Compare Source
microsoft/playwright (@playwright/test)
v1.64.1Compare Source
Bug Fixes
v1.64.0Compare Source
🧰 WebMCP
New page.webmcp and frame.webmcp give access to the tools that a page registers through the experimental WebMCP browser API, so you can test them like any other part of your app:
Playwright MCP also supports WebMCP by default, with page-defined tools offered to the agent as
webmcp_<tool>. Pass--no-webmcpto opt out.playwright-cliexposes them as well:playwright-cli webmcp-list playwright-cli webmcp-call search_catalog --params '{"query":"cats"}'🎬 Better videos
Videos can now be recorded at a custom frame rate, and the decorations for actions are styled with plain CSS:
fpsoption in testOptions.video,recordVideoandscreencast.start(). Firefox and WebKit currently capture up to 25 frames per second.
styleoption takes CSS declarations for thepointmarker, the targethighlightand the actiontitle. It replaces thefontSizeoption, which is now deprecated.quality.
playwright-cli.🎯 Test runner
New testProject.default option keeps a project in the config without running it by default. You can configure every browser you care about, and let a plain
npx playwright testrun just your favourite one:New
--shufflecommand line option schedules tests in a random order, which helps to find tests that accidentally depend on each other.New
lockoption in test.describe.configure() adds test locks to all tests in a file or a group:New
typeoption oftoHaveScreenshotin testConfig.expect stores all unnamed screenshots as WebP:🪆 Locator.within()
New locator.within() combines two locators that you already have, reading in the natural order —
"this button, within that dialog":
Relative locators such as locator.nth() or locator.first() are resolved inside each parent
separately, which makes column-like queries straightforward:
New APIs
New page.getByRef() locates an element by its aria ref, such as
e2, reported by page.ariaSnapshot() in the'ai'mode.New option
includeShadowin page.content() and frame.content() serializes open shadow roots as declarative shadow DOM.New option
signCountsets the initial signature counter of a virtual credential. credentials.create() and credentials.get() return the currentsignCount, and it is saved and restored together with the credentials in the storage state.New fullConfig.filteredProjects lists the projects that were selected to run after applying the
--projectfilter. It is available in global setup and reporters.New apiRequestContext.addCookies(), apiRequestContext.cookies() and apiRequestContext.clearCookies() manage cookies of a request context, mirroring the BrowserContext methods:
Breaking changes⚠️
screenproperty is now forwarded from the device descriptors. If you use...devices['Desktop Chrome']and alike,window.screenand media queries now see the emulated screen size. You can opt-out by explicitly settingscreentoundefined:JSX in your test files now follows your
tsconfig.json. Playwright compiles JSX in test files according to thejsx,jsxFactory,jsxFragmentFactoryandjsxImportSourcetsconfig options, and defaults to the automatic runtime fromreact/jsx-runtime.--update-snapshots=missingnow passes the test run. Tests that only create missing snapshots now pass in the'missing'mode of testConfig.updateSnapshots, so that CI can generate new snapshots and verify the existing ones in a single run. The mode used when the option is not specified is now called'default'and behaves as before: missing snapshots are written and the test fails.Elements inside hidden iframes are considered hidden. Elements inside an iframe that is not visible, for example with
visibility: hidden, are now considered hidden by actions, locator.isVisible() and expect(locator).toBeVisible().Browser Versions
This version was also tested against the following stable channels:
v1.63.0Compare Source
🔒 Test locks
Tests that access a shared resource — an external service, a global account setting — can now declare a named
lock.Tests that share a lock name never run concurrently, across files, workers and projects, while
everything else keeps running in parallel:
A test can hold multiple locks, and test.describe() accepts a
lockfor the whole group.Learn more about test locks.
🪟 Locate across frames
page.frameLocator() and frame.frameLocator() called without a selector search in any frame of the
subtree, so you no longer need to locate the iframe first:
The rest of the locator resolves inside a single frame, just like a regular locator, and an error is thrown when it
matches elements in several frames.
👁️ Visible-only locators
New locator.visible() returns a locator that matches only visible elements. It is the recommended
replacement for the
:visibleCSS pseudo-class:🧾 Step params and subtitles
Steps now carry structured data for reporters. Playwright API steps report the target locator and call arguments,
and test.step() accepts
subtitleandparamsoptions for your own steps:Reporters receive them via testStep.subtitle and testStep.params. For Playwright API
steps, the subtitle is the locator or the navigation url — for example,
Clickwith subtitlegetByRole('button').Both are rendered next to the step title in the trace viewer and the HTML report.
🖼️ Aria and screen snapshots in traces
The
snapshotsoption of tracing.start() and the testOptions.trace fixture option now accept anobject selecting what to capture on every action:
With aria and screen snapshots recorded, the new Display Aria mode in the trace viewer shows the action screenshot
side by side with the aria snapshot, and hovering an aria node highlights it on the screenshot.
New APIs
Browser and Context
httpCredentialsnow also accepts an array of credentials. The first entry matching the request origin is used, and entries without an origin match any request.opfsincludes the origin private file system in the storage state, so it can be persisted and restored into later contexts.Locators
mode,depthandboxesoptions.json():Test runner
--add-reportercommand line option appends a reporter on top of the ones configured inplaywright.config, instead of replacing them like--reporterdoes.omitTagsoption for thelist,line,dot,githubandjunitreporters suppresses the tags that are automatically appended to test titles.Command line
npx playwright install --no-removekeeps the browsers of other Playwright installations instead of removing them.npx playwright codegen --http-credentialsrecords against pages behind HTTP authentication.Miscellaneous
perfettoreporter writes a Trace Event Format file for the Perfetto UI orchrome://tracing, rendering the test run as a timeline with a lane per worker.Announcements
@playwright/experimental-ct-react,@playwright/experimental-ct-react17and@playwright/experimental-ct-vuepackages will no longer be updated. Follow the migration guide to move to the stories model introduced in 1.62. Story ids passed to fixtures.mount() can now be typed through the generatedStoriesregistry.Browser Versions
This version was also tested against the following stable channels:
radix-ui/primitives (@radix-ui/react-collapsible)
v1.2.1v1.2.0undefinedfor all optional types for compatibility with TypeScript'sexactOptionalPropertyTypesflag.@radix-ui/primitive@1.2.0,@radix-ui/react-context@1.3.0,@radix-ui/react-primitive@2.2.0,@radix-ui/react-use-controllable-state@1.3.0v1.1.21@radix-ui/react-primitive@2.1.11,@radix-ui/react-presence@1.1.11radix-ui/primitives (@radix-ui/react-dialog)
v1.3.1@radix-ui/react-dismissable-layer@1.2.1,@radix-ui/react-focus-scope@1.3.1v1.3.0undefinedfor all optional types for compatibility with TypeScript'sexactOptionalPropertyTypesflag.@radix-ui/primitive@1.2.0,@radix-ui/react-context@1.3.0,@radix-ui/react-dismissable-layer@1.2.0,@radix-ui/react-focus-guards@1.2.0,@radix-ui/react-focus-scope@1.3.0,@radix-ui/react-portal@1.2.0,@radix-ui/react-primitive@2.2.0,@radix-ui/react-slot@1.5.0,@radix-ui/react-use-controllable-state@1.3.0v1.2.0aria-describedbyattributes.FocusScopereclaimed focus, and itsRemoveScrollonly allowed scrolling within the modal content.@radix-ui/react-focus-scope@1.2.0,@radix-ui/react-slot@1.4.0,@radix-ui/react-dismissable-layer@1.1.20,@radix-ui/react-primitive@2.1.11,@radix-ui/react-presence@1.1.11,@radix-ui/react-portal@1.1.18radix-ui/primitives (@radix-ui/react-radio-group)
v1.5.1@radix-ui/react-roving-focus@1.2.1v1.5.0undefinedfor all optional types for compatibility with TypeScript'sexactOptionalPropertyTypesflag.@radix-ui/primitive@1.2.0,@radix-ui/react-context@1.3.0,@radix-ui/react-direction@1.2.0,@radix-ui/react-primitive@2.2.0,@radix-ui/react-roving-focus@1.2.0,@radix-ui/react-use-controllable-state@1.3.0v1.4.8@radix-ui/react-use-size@1.1.5,@radix-ui/react-roving-focus@1.1.20,@radix-ui/react-direction@1.1.5,@radix-ui/react-primitive@2.1.11,@radix-ui/react-presence@1.1.11radix-ui/primitives (@radix-ui/react-tabs)
v1.2.1@radix-ui/react-roving-focus@1.2.1v1.2.0undefinedfor all optional types for compatibility with TypeScript'sexactOptionalPropertyTypesflag.@radix-ui/primitive@1.2.0,@radix-ui/react-context@1.3.0,@radix-ui/react-direction@1.2.0,@radix-ui/react-primitive@2.2.0,@radix-ui/react-roving-focus@1.2.0,@radix-ui/react-use-controllable-state@1.3.0v1.1.22Tabs.Contentdid not fire a blur event before the tab switched.Tabs.Triggernow moves focus before the tab's state change.@radix-ui/react-roving-focus@1.1.20,@radix-ui/react-direction@1.1.5,@radix-ui/react-primitive@2.1.11,@radix-ui/react-presence@1.1.11postcss/autoprefixer (autoprefixer)
v10.6.1Compare Source
v10.6.0Compare Source
initial-lettersupport (by @thomasmattheussen).v10.5.6Compare Source
-webkit-gradients (by @ryanchou1994).v10.5.5Compare Source
toss/es-toolkit (es-toolkit)
v1.53.0Compare Source
Released on October 24th, 2026.
Added
serializetoes-toolkit/util, andhashin the newes-toolkit/util/hashentrypoint. ([#2067], [#2154])
Added
Queuetoes-toolkit/util. ([#2150], [#2153])Added
stringifytoes-toolkit/query-string. ([#2121])Added
sentenceCase. ([#2079])Added
lerpandinverseLerp. ([#2078])Added the
DistributiveOmittype. ([#2142])es-toolkit/compatnow runs on Node.js 6 and ES2015 environments withouttranspilation or polyfills. ([#2097], [#2161])
Fixed
deepFreezeto freeze symbol and non-enumerable properties. ([#2143])Fixed
Semaphoreto keepreleasefast when many tasks are waiting. ([#2149])Fixed
DeepPartialandDeepReadonlyto preserve branded primitive types. ([#2074])Fixed the
Mergetype to keep the input type when merging a type with itself or anarrower type, and to use the source type when a defined source replaces a nullable
or primitive value. ([#2148], [#2155])
Fixed the
fpintersectionByto match each mapped value at most once in lazypipes. ([#2146])
The following change results or types that v1.52.0 produced, so review them if you
relied on the previous behavior.
dedentnow leaves interpolated values out of the indentation calculation ([#2099]),and throws a
TypeErrorfor a malformed template literal, likeString.dedent([#2100]).deburrnow keeps letters of non-Latin scripts as they are. ([#2124])orderByandsortBynow sortNaNin a consistent position. ([#2133])oncenow calls the function with the caller'sthis. ([#2069])findKeyandmapKeysnow type keys likeObject.keys, so numeric keys arestrings. ([#2077], [#2156])
fphead,last,maxBy, andminBynow always returnT | undefined.([#2113])
The following bring
es-toolkit/compatcloser to Lodash. Behavior for the affectededge cases now matches Lodash, so results may differ if you relied on the previous output.
Fixed
compat/add,compat/subtract,compat/multiply, andcompat/dividetomatch Lodash on
nulloperands. ([#2056])Fixed
compat/ceil,compat/floor, andcompat/roundto coerce arguments likeLodash. ([#2064])
Fixed
compat/toStringto read sparse array holes asundefined. ([#2091])Fixed
compat/dropWhile,compat/dropRightWhile, andcompat/someto normalizethe predicate. ([#2072])
Fixed
compat/countByto return a plain object. ([#2090])Fixed
compat/pull,compat/pullAll,compat/pullAllBy, andcompat/removetohandle nullish inputs. ([#2095])
Fixed
compat/xorByandcompat/xorWithto ignore the iteratee and comparator fora single array. ([#2098])
Fixed
compat/reduceandcompat/reduceRightto resolve the iteratee like Lodash,and
compat/forEach,compat/forEachRight,compat/forIn,compat/forInRight,compat/forOwn, andcompat/forOwnRightto treat a non-function iteratee asidentity. ([#2101], [#2158])Fixed
compat/wordsto match titlecase letters, emoji sequences, and non-ASCIInumerals and symbols, and to keep combining marks attached to their letter.
([#2102], [#2103], [#2110])
Fixed
compat/unionWithto pass comparator arguments in Lodash's order. ([#2114])Fixed
compat/groupBy,compat/maxBy, andcompat/minByto call the iterateewith only the element. ([#2122])
Fixed
compat/deburrto only deburr Latin letters. ([#2123])Fixed
compat/truncateto escape a stringseparator. ([#2130])Fixed
compat/cloneDeepandcompat/cloneDeepWithto keep errors uncloned, andcompat/isMatchandcompat/matchesto compare errors like Lodash. ([#2159])Fixed
compat/startCaseto only uppercase the first letter of each word. ([#2160])Exported the
PropertyPathtype fromes-toolkit/compat. ([#2145])Reduced the CommonJS bundle size of
compat/everyandcompat/findLastIndex. ([#2162])Fixed documentation examples whose results did not match the code. ([#2071],
[#2109], [#2132], [#2136], [#2138])
Listed the iterator docs under the es-toolkit and fp tabs. ([#2137])
Clarified which compat behavior fixes the contributing guide accepts. ([#2107],
[#2108], [#2125])
We sincerely thank @arba-octo, @Archibald1948, @cyclomati, @D-Sketon, @dayongkr,
@HyoYoonNam, @jaideeppyne, @jeonghoon11, @jeynes-log, @JonghwanWon, @mariazuheros,
@MFA-G, @minseonkkim, @minsoo-web, @Patrick-SCH03, @poketopa, @raon0211, @ssi02014,
@TalhaHunter101, and @Tnalxmsk for their contributions. We appreciate your great
efforts!
eslint/eslint (eslint)
v10.13.0Compare Source
Features
48d5cc4feat: report references inside IIFEs inno-use-before-define(#21238) (Irfan fandi)a39d9fbfeat: addglobalThistono-obj-calls(#21382) (synthex-byte)66ac583feat: checkyield*expressions inno-unsafe-optional-chaining(#21399) (xbinaryx)Bug Fixes
87bd2cefix: avoid redeclaredletwhenno-varandone-varfix together (#21389) (Daniel Pinto)Documentation
4783a68docs: Update README (GitHub Actions Bot)43f0ac9docs: clarify parameter description ingetText(#21287) (lumir)Chores
b59d889chore: update github/codeql-action action to v4.38.3 (#21412) (renovate[bot])95e51a0ci: re-enable@typescript-eslint/typescript-eslintin ecosystem tests (#21410) (Francesco Trotta)317fcb3chore: update ecosystem plugins (#21409) (ESLint Bot)b92decfperf: skip no-redeclare scan for single-declaration variables (#21365) (James Ross)47b7063chore: update dependency @eslint/json to ^2.1.1 (#21398) (renovate[bot])e5aea41chore: update ecosystem plugins (#21390) (ESLint Bot)v10.12.0Compare Source
Features
4618052feat: handle astral letters innew-cap(#21357) (sary)4ec5168feat: allowSourceCode#getText()to accept tokens and comments (#21340) (electrohyun)Bug Fixes
bc51eeefix:prefer-arrow-callbackfalse positive in conditional test (#21373) (Daniel Pinto)bbff86cfix: skip lines with multiple comments inmax-lines-per-function(#21332) (xbinaryx)efc4d6bfix: astral letters inconsistent-return,no-eval,no-invalid-this(#21360) (lumir)93de066fix: prefer-exponentiation-operator autofix for async function base (#21322) (Vladimir Babin)02e34fffix: add missing space afterelseincurlyautofix (#21355) (Pixel)b14b8bc](https://redirect.github.com/eslint/eslint/commit/b14Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.