diff --git a/.changeset/fix-svelte-control-flow-use-import-type.md b/.changeset/fix-svelte-control-flow-use-import-type.md deleted file mode 100644 index bd9f52b6cf06..000000000000 --- a/.changeset/fix-svelte-control-flow-use-import-type.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Fixed [#9098](https://github.com/biomejs/biome/issues/9098): `useImportType` no longer incorrectly flags imports used in Svelte control flow blocks (`{#if}`, `{#each}`, `{#await}`, `{#key}`) as type-only imports. diff --git a/.changeset/grumpy-tires-roll.md b/.changeset/grumpy-tires-roll.md deleted file mode 100644 index ec0056979c36..000000000000 --- a/.changeset/grumpy-tires-roll.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Updated rule source metadata for rules from `html-eslint`. diff --git a/.changeset/no-conditional-expect.md b/.changeset/no-conditional-expect.md deleted file mode 100644 index 9cf1da66f1a2..000000000000 --- a/.changeset/no-conditional-expect.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Added the nursery rule [`noConditionalExpect`](https://biomejs.dev/linter/rules/no-conditional-expect/). This rule disallows conditional `expect()` calls inside tests, which can lead to tests that silently pass when assertions never run. - -```js -// Invalid - conditional expect may not run -test("conditional", async ({ page }) => { - if (someCondition) { - await expect(page).toHaveTitle("Title"); - } -}); - -// Valid - unconditional expect -test("unconditional", async ({ page }) => { - await expect(page).toHaveTitle("Title"); -}); -``` diff --git a/.changeset/no-playwright-element-handle.md b/.changeset/no-playwright-element-handle.md deleted file mode 100644 index 88dc182fb5da..000000000000 --- a/.changeset/no-playwright-element-handle.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Added the nursery rule [`noPlaywrightElementHandle`](https://biomejs.dev/linter/rules/no-playwright-element-handle/). Prefers locators to element handles. - -```js -const el = await page.$('.btn'); -``` diff --git a/.changeset/no-playwright-eval.md b/.changeset/no-playwright-eval.md deleted file mode 100644 index 08a66a10a673..000000000000 --- a/.changeset/no-playwright-eval.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Added the nursery rule [`noPlaywrightEval`](https://biomejs.dev/linter/rules/no-playwright-eval/). Disallows `page.$eval()` and `page.$$eval()` methods. - -```js -await page.$eval('.btn', el => el.textContent); -``` diff --git a/.changeset/no-playwright-force-option.md b/.changeset/no-playwright-force-option.md deleted file mode 100644 index 55f9553e6cbf..000000000000 --- a/.changeset/no-playwright-force-option.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Added the nursery rule [`noPlaywrightForceOption`](https://biomejs.dev/linter/rules/no-playwright-force-option/). Disallows the `force` option on user interactions. - -```js -await locator.click({ force: true }); -``` diff --git a/.changeset/no-playwright-missing-await.md b/.changeset/no-playwright-missing-await.md deleted file mode 100644 index 524472a96d5a..000000000000 --- a/.changeset/no-playwright-missing-await.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Added the nursery rule [`noPlaywrightMissingAwait`](https://biomejs.dev/linter/rules/no-playwright-missing-await/). Enforces awaiting async Playwright APIs. - -```js -const el = page.locator('.btn'); -el.click(); // Missing await -``` diff --git a/.changeset/no-playwright-networkidle.md b/.changeset/no-playwright-networkidle.md deleted file mode 100644 index e36db3805cb4..000000000000 --- a/.changeset/no-playwright-networkidle.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Added the nursery rule [`noPlaywrightNetworkidle`](https://biomejs.dev/linter/rules/no-playwright-networkidle/). Disallows deprecated `networkidle` wait option. - -```js -await page.goto(url, { waitUntil: 'networkidle' }); -``` diff --git a/.changeset/no-playwright-page-pause.md b/.changeset/no-playwright-page-pause.md deleted file mode 100644 index 80db026e0fb7..000000000000 --- a/.changeset/no-playwright-page-pause.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Added the nursery rule [`noPlaywrightPagePause`](https://biomejs.dev/linter/rules/no-playwright-page-pause/). Disallows `page.pause()` debugging calls in committed code. - -```js -await page.pause(); -``` diff --git a/.changeset/no-playwright-useless-await.md b/.changeset/no-playwright-useless-await.md deleted file mode 100644 index 5a0364704bcc..000000000000 --- a/.changeset/no-playwright-useless-await.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Added the nursery rule [`noPlaywrightUselessAwait`](https://biomejs.dev/linter/rules/no-playwright-useless-await/). Disallows unnecessary `await` on synchronous Playwright methods. - -```js -// Incorrect - locator() is synchronous -const loc = await page.locator('.btn'); -``` diff --git a/.changeset/no-playwright-wait-for-navigation.md b/.changeset/no-playwright-wait-for-navigation.md deleted file mode 100644 index baf844db7194..000000000000 --- a/.changeset/no-playwright-wait-for-navigation.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Added the nursery rule [`noPlaywrightWaitForNavigation`](https://biomejs.dev/linter/rules/no-playwright-wait-for-navigation/). Prefers modern navigation APIs over deprecated `waitForNavigation()`. - -```js -await page.waitForNavigation(); -``` diff --git a/.changeset/no-playwright-wait-for-selector.md b/.changeset/no-playwright-wait-for-selector.md deleted file mode 100644 index b797738940d2..000000000000 --- a/.changeset/no-playwright-wait-for-selector.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Added the nursery rule [`noPlaywrightWaitForSelector`](https://biomejs.dev/linter/rules/no-playwright-wait-for-selector/). Prefers locators over deprecated `waitForSelector()`. - -```js -await page.waitForSelector('.btn'); -``` diff --git a/.changeset/no-playwright-wait-for-timeout.md b/.changeset/no-playwright-wait-for-timeout.md deleted file mode 100644 index e9c25b8e23a5..000000000000 --- a/.changeset/no-playwright-wait-for-timeout.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Added the nursery rule [`noPlaywrightWaitForTimeout`](https://biomejs.dev/linter/rules/no-playwright-wait-for-timeout/). Disallows hard-coded timeouts with `waitForTimeout()`. - -```js -await page.waitForTimeout(5000); -``` diff --git a/.changeset/no-skipped-tests-enhancement.md b/.changeset/no-skipped-tests-enhancement.md deleted file mode 100644 index 268fd87bc1f2..000000000000 --- a/.changeset/no-skipped-tests-enhancement.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Enhanced `noSkippedTests` to detect Playwright patterns (`.fixme`, `test.describe`, `test.step`, bracket notation, bare calls). Consolidated `noPlaywrightSkippedTest` into this rule. diff --git a/.changeset/smooth-tips-fry.md b/.changeset/smooth-tips-fry.md deleted file mode 100644 index 51ca6faf915c..000000000000 --- a/.changeset/smooth-tips-fry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Fixed [`#9080`](https://github.com/biomejs/biome/issues/9080): The `noUnusedVariables` rule no longer reports a top-level `Props` interface or type alias as unused in Astro files. diff --git a/.changeset/use-expect.md b/.changeset/use-expect.md deleted file mode 100644 index df1a253aab3c..000000000000 --- a/.changeset/use-expect.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Added the nursery rule [`useExpect`](https://biomejs.dev/linter/rules/use-expect/). This rule ensures that test functions contain at least one `expect()` assertion. - -```js -// Invalid - test without assertion -test("no assertion", async ({ page }) => { - await page.goto("/"); -}); - -// Valid - test with assertion -test("has assertion", async ({ page }) => { - await expect(page).toHaveTitle("Title"); -}); -``` diff --git a/.changeset/use-playwright-valid-describe-callback.md b/.changeset/use-playwright-valid-describe-callback.md deleted file mode 100644 index 9eae40b55337..000000000000 --- a/.changeset/use-playwright-valid-describe-callback.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@biomejs/biome": patch ---- - -Added the nursery rule [`usePlaywrightValidDescribeCallback`](https://biomejs.dev/linter/rules/use-playwright-valid-describe-callback/). Validates that describe callback signatures are not async. - -```js -test.describe('suite', async () => {}); -``` diff --git a/crates/biome_js_analyze/src/lint/nursery/no_conditional_expect.rs b/crates/biome_js_analyze/src/lint/nursery/no_conditional_expect.rs index 1dc137f8cfbb..bbf02cdba930 100644 --- a/crates/biome_js_analyze/src/lint/nursery/no_conditional_expect.rs +++ b/crates/biome_js_analyze/src/lint/nursery/no_conditional_expect.rs @@ -64,7 +64,7 @@ declare_lint_rule! { /// ``` /// pub NoConditionalExpect { - version: "next", + version: "2.4.2", name: "noConditionalExpect", language: "js", sources: &[ diff --git a/crates/biome_js_analyze/src/lint/nursery/no_playwright_element_handle.rs b/crates/biome_js_analyze/src/lint/nursery/no_playwright_element_handle.rs index 898033d821b9..c3b3f4ca5f83 100644 --- a/crates/biome_js_analyze/src/lint/nursery/no_playwright_element_handle.rs +++ b/crates/biome_js_analyze/src/lint/nursery/no_playwright_element_handle.rs @@ -51,7 +51,7 @@ declare_lint_rule! { /// ``` /// pub NoPlaywrightElementHandle { - version: "next", + version: "2.4.2", name: "noPlaywrightElementHandle", language: "js", sources: &[RuleSource::EslintPlaywright("no-element-handle").same()], diff --git a/crates/biome_js_analyze/src/lint/nursery/no_playwright_eval.rs b/crates/biome_js_analyze/src/lint/nursery/no_playwright_eval.rs index 620e50c110fd..44df969efa59 100644 --- a/crates/biome_js_analyze/src/lint/nursery/no_playwright_eval.rs +++ b/crates/biome_js_analyze/src/lint/nursery/no_playwright_eval.rs @@ -37,7 +37,7 @@ declare_lint_rule! { /// ``` /// pub NoPlaywrightEval { - version: "next", + version: "2.4.2", name: "noPlaywrightEval", language: "js", sources: &[RuleSource::EslintPlaywright("no-eval").same()], diff --git a/crates/biome_js_analyze/src/lint/nursery/no_playwright_force_option.rs b/crates/biome_js_analyze/src/lint/nursery/no_playwright_force_option.rs index 0f1850f39dca..b5cee6735bdc 100644 --- a/crates/biome_js_analyze/src/lint/nursery/no_playwright_force_option.rs +++ b/crates/biome_js_analyze/src/lint/nursery/no_playwright_force_option.rs @@ -45,7 +45,7 @@ declare_lint_rule! { /// ``` /// pub NoPlaywrightForceOption { - version: "next", + version: "2.4.2", name: "noPlaywrightForceOption", language: "js", sources: &[RuleSource::EslintPlaywright("no-force-option").same()], diff --git a/crates/biome_js_analyze/src/lint/nursery/no_playwright_missing_await.rs b/crates/biome_js_analyze/src/lint/nursery/no_playwright_missing_await.rs index b19857d5f356..45c15742b2a1 100644 --- a/crates/biome_js_analyze/src/lint/nursery/no_playwright_missing_await.rs +++ b/crates/biome_js_analyze/src/lint/nursery/no_playwright_missing_await.rs @@ -59,7 +59,7 @@ declare_lint_rule! { /// ``` /// pub NoPlaywrightMissingAwait { - version: "next", + version: "2.4.2", name: "noPlaywrightMissingAwait", language: "js", sources: &[RuleSource::EslintPlaywright("missing-playwright-await").same()], diff --git a/crates/biome_js_analyze/src/lint/nursery/no_playwright_networkidle.rs b/crates/biome_js_analyze/src/lint/nursery/no_playwright_networkidle.rs index 7881dd5fd7e7..1f90586d9ac9 100644 --- a/crates/biome_js_analyze/src/lint/nursery/no_playwright_networkidle.rs +++ b/crates/biome_js_analyze/src/lint/nursery/no_playwright_networkidle.rs @@ -38,7 +38,7 @@ declare_lint_rule! { /// ``` /// pub NoPlaywrightNetworkidle { - version: "next", + version: "2.4.2", name: "noPlaywrightNetworkidle", language: "js", sources: &[RuleSource::EslintPlaywright("no-networkidle").same()], diff --git a/crates/biome_js_analyze/src/lint/nursery/no_playwright_page_pause.rs b/crates/biome_js_analyze/src/lint/nursery/no_playwright_page_pause.rs index cd5543cc8811..f09633fae8e2 100644 --- a/crates/biome_js_analyze/src/lint/nursery/no_playwright_page_pause.rs +++ b/crates/biome_js_analyze/src/lint/nursery/no_playwright_page_pause.rs @@ -40,7 +40,7 @@ declare_lint_rule! { /// ``` /// pub NoPlaywrightPagePause { - version: "next", + version: "2.4.2", name: "noPlaywrightPagePause", language: "js", sources: &[RuleSource::EslintPlaywright("no-page-pause").same()], diff --git a/crates/biome_js_analyze/src/lint/nursery/no_playwright_useless_await.rs b/crates/biome_js_analyze/src/lint/nursery/no_playwright_useless_await.rs index 3115acca134a..d2bc4167778a 100644 --- a/crates/biome_js_analyze/src/lint/nursery/no_playwright_useless_await.rs +++ b/crates/biome_js_analyze/src/lint/nursery/no_playwright_useless_await.rs @@ -52,7 +52,7 @@ declare_lint_rule! { /// ``` /// pub NoPlaywrightUselessAwait { - version: "next", + version: "2.4.2", name: "noPlaywrightUselessAwait", language: "js", sources: &[RuleSource::EslintPlaywright("no-useless-await").same()], diff --git a/crates/biome_js_analyze/src/lint/nursery/no_playwright_wait_for_navigation.rs b/crates/biome_js_analyze/src/lint/nursery/no_playwright_wait_for_navigation.rs index 7c8820870f32..dea3bc9065a3 100644 --- a/crates/biome_js_analyze/src/lint/nursery/no_playwright_wait_for_navigation.rs +++ b/crates/biome_js_analyze/src/lint/nursery/no_playwright_wait_for_navigation.rs @@ -42,7 +42,7 @@ declare_lint_rule! { /// ``` /// pub NoPlaywrightWaitForNavigation { - version: "next", + version: "2.4.2", name: "noPlaywrightWaitForNavigation", language: "js", sources: &[RuleSource::EslintPlaywright("no-wait-for-navigation").same()], diff --git a/crates/biome_js_analyze/src/lint/nursery/no_playwright_wait_for_selector.rs b/crates/biome_js_analyze/src/lint/nursery/no_playwright_wait_for_selector.rs index 4b6088250376..d2728f545bf8 100644 --- a/crates/biome_js_analyze/src/lint/nursery/no_playwright_wait_for_selector.rs +++ b/crates/biome_js_analyze/src/lint/nursery/no_playwright_wait_for_selector.rs @@ -48,7 +48,7 @@ declare_lint_rule! { /// ``` /// pub NoPlaywrightWaitForSelector { - version: "next", + version: "2.4.2", name: "noPlaywrightWaitForSelector", language: "js", sources: &[RuleSource::EslintPlaywright("no-wait-for-selector").same()], diff --git a/crates/biome_js_analyze/src/lint/nursery/no_playwright_wait_for_timeout.rs b/crates/biome_js_analyze/src/lint/nursery/no_playwright_wait_for_timeout.rs index dfc1307931f2..3467e49eb8bb 100644 --- a/crates/biome_js_analyze/src/lint/nursery/no_playwright_wait_for_timeout.rs +++ b/crates/biome_js_analyze/src/lint/nursery/no_playwright_wait_for_timeout.rs @@ -42,7 +42,7 @@ declare_lint_rule! { /// ``` /// pub NoPlaywrightWaitForTimeout { - version: "next", + version: "2.4.2", name: "noPlaywrightWaitForTimeout", language: "js", sources: &[RuleSource::EslintPlaywright("no-wait-for-timeout").same()], diff --git a/crates/biome_js_analyze/src/lint/nursery/use_expect.rs b/crates/biome_js_analyze/src/lint/nursery/use_expect.rs index 16427e0c2b8e..0c3987ab8929 100644 --- a/crates/biome_js_analyze/src/lint/nursery/use_expect.rs +++ b/crates/biome_js_analyze/src/lint/nursery/use_expect.rs @@ -43,7 +43,7 @@ declare_lint_rule! { /// ``` /// pub UseExpect { - version: "next", + version: "2.4.2", name: "useExpect", language: "js", sources: &[ diff --git a/crates/biome_js_analyze/src/lint/nursery/use_playwright_valid_describe_callback.rs b/crates/biome_js_analyze/src/lint/nursery/use_playwright_valid_describe_callback.rs index 16b818d51af9..df66920c2959 100644 --- a/crates/biome_js_analyze/src/lint/nursery/use_playwright_valid_describe_callback.rs +++ b/crates/biome_js_analyze/src/lint/nursery/use_playwright_valid_describe_callback.rs @@ -46,7 +46,7 @@ declare_lint_rule! { /// ``` /// pub UsePlaywrightValidDescribeCallback { - version: "next", + version: "2.4.2", name: "usePlaywrightValidDescribeCallback", language: "js", sources: &[RuleSource::EslintPlaywright("valid-describe-callback").same()], diff --git a/packages/@biomejs/backend-jsonrpc/CHANGELOG.md b/packages/@biomejs/backend-jsonrpc/CHANGELOG.md index 0035eb7216c3..fc53c372c009 100644 --- a/packages/@biomejs/backend-jsonrpc/CHANGELOG.md +++ b/packages/@biomejs/backend-jsonrpc/CHANGELOG.md @@ -1,5 +1,7 @@ # @biomejs/backend-jsonrpc +## 2.0.39 + ## 2.0.38 ## 2.0.37 diff --git a/packages/@biomejs/backend-jsonrpc/package.json b/packages/@biomejs/backend-jsonrpc/package.json index 71b4ba777446..bb4d11267571 100644 --- a/packages/@biomejs/backend-jsonrpc/package.json +++ b/packages/@biomejs/backend-jsonrpc/package.json @@ -1,6 +1,6 @@ { "name": "@biomejs/backend-jsonrpc", - "version": "2.0.38", + "version": "2.0.39", "main": "dist/index.js", "scripts": { "test": "vitest", @@ -45,13 +45,13 @@ "provenance": true }, "optionalDependencies": { - "@biomejs/cli-win32-x64": "2.4.1", - "@biomejs/cli-win32-arm64": "2.4.1", - "@biomejs/cli-darwin-x64": "2.4.1", - "@biomejs/cli-darwin-arm64": "2.4.1", - "@biomejs/cli-linux-x64": "2.4.1", - "@biomejs/cli-linux-arm64": "2.4.1", - "@biomejs/cli-linux-x64-musl": "2.4.1", - "@biomejs/cli-linux-arm64-musl": "2.4.1" + "@biomejs/cli-win32-x64": "2.4.2", + "@biomejs/cli-win32-arm64": "2.4.2", + "@biomejs/cli-darwin-x64": "2.4.2", + "@biomejs/cli-darwin-arm64": "2.4.2", + "@biomejs/cli-linux-x64": "2.4.2", + "@biomejs/cli-linux-arm64": "2.4.2", + "@biomejs/cli-linux-x64-musl": "2.4.2", + "@biomejs/cli-linux-arm64-musl": "2.4.2" } } diff --git a/packages/@biomejs/biome/CHANGELOG.md b/packages/@biomejs/biome/CHANGELOG.md index 6a6511d4e22f..8285f21613ba 100644 --- a/packages/@biomejs/biome/CHANGELOG.md +++ b/packages/@biomejs/biome/CHANGELOG.md @@ -1,5 +1,115 @@ # @biomejs/biome +## 2.4.2 + +### Patch Changes + +- [#9103](https://github.com/biomejs/biome/pull/9103) [`fc9850c`](https://github.com/biomejs/biome/commit/fc9850c4858f6d1a9c1314d782fd561a6c2253c3) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#9098](https://github.com/biomejs/biome/issues/9098): `useImportType` no longer incorrectly flags imports used in Svelte control flow blocks (`{#if}`, `{#each}`, `{#await}`, `{#key}`) as type-only imports. + +- [#9106](https://github.com/biomejs/biome/pull/9106) [`f4b7296`](https://github.com/biomejs/biome/commit/f4b729679e0ff4452758e026e053bb7b08add4b2) Thanks [@dyc3](https://github.com/dyc3)! - Updated rule source metadata for rules from `html-eslint`. + +- [#8960](https://github.com/biomejs/biome/pull/8960) [`4a5ff40`](https://github.com/biomejs/biome/commit/4a5ff4034d8406d7de28aa6ce8095987c3fef547) Thanks [@abossenbroek](https://github.com/abossenbroek)! - Added the nursery rule [`noConditionalExpect`](https://biomejs.dev/linter/rules/no-conditional-expect/). This rule disallows conditional `expect()` calls inside tests, which can lead to tests that silently pass when assertions never run. + + ```js + // Invalid - conditional expect may not run + test("conditional", async ({ page }) => { + if (someCondition) { + await expect(page).toHaveTitle("Title"); + } + }); + + // Valid - unconditional expect + test("unconditional", async ({ page }) => { + await expect(page).toHaveTitle("Title"); + }); + ``` + +- [#8960](https://github.com/biomejs/biome/pull/8960) [`4a5ff40`](https://github.com/biomejs/biome/commit/4a5ff4034d8406d7de28aa6ce8095987c3fef547) Thanks [@abossenbroek](https://github.com/abossenbroek)! - Added the nursery rule [`noPlaywrightElementHandle`](https://biomejs.dev/linter/rules/no-playwright-element-handle/). Prefers locators to element handles. + + ```js + const el = await page.$(".btn"); + ``` + +- [#8960](https://github.com/biomejs/biome/pull/8960) [`4a5ff40`](https://github.com/biomejs/biome/commit/4a5ff4034d8406d7de28aa6ce8095987c3fef547) Thanks [@abossenbroek](https://github.com/abossenbroek)! - Added the nursery rule [`noPlaywrightEval`](https://biomejs.dev/linter/rules/no-playwright-eval/). Disallows `page.$eval()` and `page.$$eval()` methods. + + ```js + await page.$eval(".btn", (el) => el.textContent); + ``` + +- [#8960](https://github.com/biomejs/biome/pull/8960) [`4a5ff40`](https://github.com/biomejs/biome/commit/4a5ff4034d8406d7de28aa6ce8095987c3fef547) Thanks [@abossenbroek](https://github.com/abossenbroek)! - Added the nursery rule [`noPlaywrightForceOption`](https://biomejs.dev/linter/rules/no-playwright-force-option/). Disallows the `force` option on user interactions. + + ```js + await locator.click({ force: true }); + ``` + +- [#8960](https://github.com/biomejs/biome/pull/8960) [`4a5ff40`](https://github.com/biomejs/biome/commit/4a5ff4034d8406d7de28aa6ce8095987c3fef547) Thanks [@abossenbroek](https://github.com/abossenbroek)! - Added the nursery rule [`noPlaywrightMissingAwait`](https://biomejs.dev/linter/rules/no-playwright-missing-await/). Enforces awaiting async Playwright APIs. + + ```js + const el = page.locator(".btn"); + el.click(); // Missing await + ``` + +- [#8960](https://github.com/biomejs/biome/pull/8960) [`4a5ff40`](https://github.com/biomejs/biome/commit/4a5ff4034d8406d7de28aa6ce8095987c3fef547) Thanks [@abossenbroek](https://github.com/abossenbroek)! - Added the nursery rule [`noPlaywrightNetworkidle`](https://biomejs.dev/linter/rules/no-playwright-networkidle/). Disallows deprecated `networkidle` wait option. + + ```js + await page.goto(url, { waitUntil: "networkidle" }); + ``` + +- [#8960](https://github.com/biomejs/biome/pull/8960) [`4a5ff40`](https://github.com/biomejs/biome/commit/4a5ff4034d8406d7de28aa6ce8095987c3fef547) Thanks [@abossenbroek](https://github.com/abossenbroek)! - Added the nursery rule [`noPlaywrightPagePause`](https://biomejs.dev/linter/rules/no-playwright-page-pause/). Disallows `page.pause()` debugging calls in committed code. + + ```js + await page.pause(); + ``` + +- [#8960](https://github.com/biomejs/biome/pull/8960) [`4a5ff40`](https://github.com/biomejs/biome/commit/4a5ff4034d8406d7de28aa6ce8095987c3fef547) Thanks [@abossenbroek](https://github.com/abossenbroek)! - Added the nursery rule [`noPlaywrightUselessAwait`](https://biomejs.dev/linter/rules/no-playwright-useless-await/). Disallows unnecessary `await` on synchronous Playwright methods. + + ```js + // Incorrect - locator() is synchronous + const loc = await page.locator(".btn"); + ``` + +- [#8960](https://github.com/biomejs/biome/pull/8960) [`4a5ff40`](https://github.com/biomejs/biome/commit/4a5ff4034d8406d7de28aa6ce8095987c3fef547) Thanks [@abossenbroek](https://github.com/abossenbroek)! - Added the nursery rule [`noPlaywrightWaitForNavigation`](https://biomejs.dev/linter/rules/no-playwright-wait-for-navigation/). Prefers modern navigation APIs over deprecated `waitForNavigation()`. + + ```js + await page.waitForNavigation(); + ``` + +- [#8960](https://github.com/biomejs/biome/pull/8960) [`4a5ff40`](https://github.com/biomejs/biome/commit/4a5ff4034d8406d7de28aa6ce8095987c3fef547) Thanks [@abossenbroek](https://github.com/abossenbroek)! - Added the nursery rule [`noPlaywrightWaitForSelector`](https://biomejs.dev/linter/rules/no-playwright-wait-for-selector/). Prefers locators over deprecated `waitForSelector()`. + + ```js + await page.waitForSelector(".btn"); + ``` + +- [#8960](https://github.com/biomejs/biome/pull/8960) [`4a5ff40`](https://github.com/biomejs/biome/commit/4a5ff4034d8406d7de28aa6ce8095987c3fef547) Thanks [@abossenbroek](https://github.com/abossenbroek)! - Added the nursery rule [`noPlaywrightWaitForTimeout`](https://biomejs.dev/linter/rules/no-playwright-wait-for-timeout/). Disallows hard-coded timeouts with `waitForTimeout()`. + + ```js + await page.waitForTimeout(5000); + ``` + +- [#8960](https://github.com/biomejs/biome/pull/8960) [`4a5ff40`](https://github.com/biomejs/biome/commit/4a5ff4034d8406d7de28aa6ce8095987c3fef547) Thanks [@abossenbroek](https://github.com/abossenbroek)! - Enhanced `noSkippedTests` to detect Playwright patterns (`.fixme`, `test.describe`, `test.step`, bracket notation, bare calls). Consolidated `noPlaywrightSkippedTest` into this rule. + +- [#9101](https://github.com/biomejs/biome/pull/9101) [`0c0fb6f`](https://github.com/biomejs/biome/commit/0c0fb6fe1b5b2a935cf61101a7bc5323a979dce9) Thanks [@siketyan](https://github.com/siketyan)! - Fixed [`#9080`](https://github.com/biomejs/biome/issues/9080): The `noUnusedVariables` rule no longer reports a top-level `Props` interface or type alias as unused in Astro files. + +- [#8960](https://github.com/biomejs/biome/pull/8960) [`4a5ff40`](https://github.com/biomejs/biome/commit/4a5ff4034d8406d7de28aa6ce8095987c3fef547) Thanks [@abossenbroek](https://github.com/abossenbroek)! - Added the nursery rule [`useExpect`](https://biomejs.dev/linter/rules/use-expect/). This rule ensures that test functions contain at least one `expect()` assertion. + + ```js + // Invalid - test without assertion + test("no assertion", async ({ page }) => { + await page.goto("/"); + }); + + // Valid - test with assertion + test("has assertion", async ({ page }) => { + await expect(page).toHaveTitle("Title"); + }); + ``` + +- [#8960](https://github.com/biomejs/biome/pull/8960) [`4a5ff40`](https://github.com/biomejs/biome/commit/4a5ff4034d8406d7de28aa6ce8095987c3fef547) Thanks [@abossenbroek](https://github.com/abossenbroek)! - Added the nursery rule [`usePlaywrightValidDescribeCallback`](https://biomejs.dev/linter/rules/use-playwright-valid-describe-callback/). Validates that describe callback signatures are not async. + + ```js + test.describe("suite", async () => {}); + ``` + ## 2.4.1 ### Patch Changes diff --git a/packages/@biomejs/biome/package.json b/packages/@biomejs/biome/package.json index bcaa2ef7aa65..89cab40cc23d 100644 --- a/packages/@biomejs/biome/package.json +++ b/packages/@biomejs/biome/package.json @@ -1,6 +1,6 @@ { "name": "@biomejs/biome", - "version": "2.4.1", + "version": "2.4.2", "bin": { "biome": "bin/biome" }, @@ -46,13 +46,13 @@ "provenance": true }, "optionalDependencies": { - "@biomejs/cli-win32-x64": "2.4.1", - "@biomejs/cli-win32-arm64": "2.4.1", - "@biomejs/cli-darwin-x64": "2.4.1", - "@biomejs/cli-darwin-arm64": "2.4.1", - "@biomejs/cli-linux-x64": "2.4.1", - "@biomejs/cli-linux-arm64": "2.4.1", - "@biomejs/cli-linux-x64-musl": "2.4.1", - "@biomejs/cli-linux-arm64-musl": "2.4.1" + "@biomejs/cli-win32-x64": "2.4.2", + "@biomejs/cli-win32-arm64": "2.4.2", + "@biomejs/cli-darwin-x64": "2.4.2", + "@biomejs/cli-darwin-arm64": "2.4.2", + "@biomejs/cli-linux-x64": "2.4.2", + "@biomejs/cli-linux-arm64": "2.4.2", + "@biomejs/cli-linux-x64-musl": "2.4.2", + "@biomejs/cli-linux-arm64-musl": "2.4.2" } } diff --git a/packages/@biomejs/cli-darwin-arm64/CHANGELOG.md b/packages/@biomejs/cli-darwin-arm64/CHANGELOG.md index 6dcd90513c0b..8ef3015ba402 100644 --- a/packages/@biomejs/cli-darwin-arm64/CHANGELOG.md +++ b/packages/@biomejs/cli-darwin-arm64/CHANGELOG.md @@ -1,5 +1,7 @@ # @biomejs/cli-darwin-arm64 +## 2.4.2 + ## 2.4.1 ## 2.4.0 diff --git a/packages/@biomejs/cli-darwin-arm64/package.json b/packages/@biomejs/cli-darwin-arm64/package.json index fc5da57923b5..6e329f6e0dca 100644 --- a/packages/@biomejs/cli-darwin-arm64/package.json +++ b/packages/@biomejs/cli-darwin-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@biomejs/cli-darwin-arm64", - "version": "2.4.1", + "version": "2.4.2", "license": "MIT OR Apache-2.0", "repository": { "type": "git", diff --git a/packages/@biomejs/cli-darwin-x64/CHANGELOG.md b/packages/@biomejs/cli-darwin-x64/CHANGELOG.md index 3e873c28d9b8..ce81c8dd23f4 100644 --- a/packages/@biomejs/cli-darwin-x64/CHANGELOG.md +++ b/packages/@biomejs/cli-darwin-x64/CHANGELOG.md @@ -1,5 +1,7 @@ # @biomejs/cli-darwin-x64 +## 2.4.2 + ## 2.4.1 ## 2.4.0 diff --git a/packages/@biomejs/cli-darwin-x64/package.json b/packages/@biomejs/cli-darwin-x64/package.json index c4eccb509182..565af3617e38 100644 --- a/packages/@biomejs/cli-darwin-x64/package.json +++ b/packages/@biomejs/cli-darwin-x64/package.json @@ -1,6 +1,6 @@ { "name": "@biomejs/cli-darwin-x64", - "version": "2.4.1", + "version": "2.4.2", "license": "MIT OR Apache-2.0", "repository": { "type": "git", diff --git a/packages/@biomejs/cli-linux-arm64-musl/CHANGELOG.md b/packages/@biomejs/cli-linux-arm64-musl/CHANGELOG.md index 74d25838e4a2..3151c9f4b0bf 100644 --- a/packages/@biomejs/cli-linux-arm64-musl/CHANGELOG.md +++ b/packages/@biomejs/cli-linux-arm64-musl/CHANGELOG.md @@ -1,5 +1,7 @@ # @biomejs/cli-linux-arm64-musl +## 2.4.2 + ## 2.4.1 ## 2.4.0 diff --git a/packages/@biomejs/cli-linux-arm64-musl/package.json b/packages/@biomejs/cli-linux-arm64-musl/package.json index ccd1d8d154cb..50baa9cbb887 100644 --- a/packages/@biomejs/cli-linux-arm64-musl/package.json +++ b/packages/@biomejs/cli-linux-arm64-musl/package.json @@ -1,6 +1,6 @@ { "name": "@biomejs/cli-linux-arm64-musl", - "version": "2.4.1", + "version": "2.4.2", "license": "MIT OR Apache-2.0", "repository": { "type": "git", diff --git a/packages/@biomejs/cli-linux-arm64/CHANGELOG.md b/packages/@biomejs/cli-linux-arm64/CHANGELOG.md index 734fab8afc4e..df737db351a9 100644 --- a/packages/@biomejs/cli-linux-arm64/CHANGELOG.md +++ b/packages/@biomejs/cli-linux-arm64/CHANGELOG.md @@ -1,5 +1,7 @@ # @biomejs/cli-linux-arm64 +## 2.4.2 + ## 2.4.1 ## 2.4.0 diff --git a/packages/@biomejs/cli-linux-arm64/package.json b/packages/@biomejs/cli-linux-arm64/package.json index 379e125c0e02..4c302bf181bf 100644 --- a/packages/@biomejs/cli-linux-arm64/package.json +++ b/packages/@biomejs/cli-linux-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@biomejs/cli-linux-arm64", - "version": "2.4.1", + "version": "2.4.2", "license": "MIT OR Apache-2.0", "repository": { "type": "git", diff --git a/packages/@biomejs/cli-linux-x64-musl/CHANGELOG.md b/packages/@biomejs/cli-linux-x64-musl/CHANGELOG.md index 8d2cc97d545c..516c171b8beb 100644 --- a/packages/@biomejs/cli-linux-x64-musl/CHANGELOG.md +++ b/packages/@biomejs/cli-linux-x64-musl/CHANGELOG.md @@ -1,5 +1,7 @@ # @biomejs/cli-linux-x64-musl +## 2.4.2 + ## 2.4.1 ## 2.4.0 diff --git a/packages/@biomejs/cli-linux-x64-musl/package.json b/packages/@biomejs/cli-linux-x64-musl/package.json index f3dc978477c0..e309ceb357b1 100644 --- a/packages/@biomejs/cli-linux-x64-musl/package.json +++ b/packages/@biomejs/cli-linux-x64-musl/package.json @@ -1,6 +1,6 @@ { "name": "@biomejs/cli-linux-x64-musl", - "version": "2.4.1", + "version": "2.4.2", "license": "MIT OR Apache-2.0", "repository": { "type": "git", diff --git a/packages/@biomejs/cli-linux-x64/CHANGELOG.md b/packages/@biomejs/cli-linux-x64/CHANGELOG.md index 33dbdcd8ddc5..0af2e5ea71be 100644 --- a/packages/@biomejs/cli-linux-x64/CHANGELOG.md +++ b/packages/@biomejs/cli-linux-x64/CHANGELOG.md @@ -1,5 +1,7 @@ # @biomejs/cli-linux-x64 +## 2.4.2 + ## 2.4.1 ## 2.4.0 diff --git a/packages/@biomejs/cli-linux-x64/package.json b/packages/@biomejs/cli-linux-x64/package.json index 750eaf24a791..a4658a786923 100644 --- a/packages/@biomejs/cli-linux-x64/package.json +++ b/packages/@biomejs/cli-linux-x64/package.json @@ -1,6 +1,6 @@ { "name": "@biomejs/cli-linux-x64", - "version": "2.4.1", + "version": "2.4.2", "license": "MIT OR Apache-2.0", "repository": { "type": "git", diff --git a/packages/@biomejs/cli-win32-arm64/CHANGELOG.md b/packages/@biomejs/cli-win32-arm64/CHANGELOG.md index 67b93f55489f..6b3e8fadc447 100644 --- a/packages/@biomejs/cli-win32-arm64/CHANGELOG.md +++ b/packages/@biomejs/cli-win32-arm64/CHANGELOG.md @@ -1,5 +1,7 @@ # @biomejs/cli-win32-arm64 +## 2.4.2 + ## 2.4.1 ## 2.4.0 diff --git a/packages/@biomejs/cli-win32-arm64/package.json b/packages/@biomejs/cli-win32-arm64/package.json index 4b34e47ce81e..7d455d10e7ac 100644 --- a/packages/@biomejs/cli-win32-arm64/package.json +++ b/packages/@biomejs/cli-win32-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@biomejs/cli-win32-arm64", - "version": "2.4.1", + "version": "2.4.2", "license": "MIT OR Apache-2.0", "repository": { "type": "git", diff --git a/packages/@biomejs/cli-win32-x64/CHANGELOG.md b/packages/@biomejs/cli-win32-x64/CHANGELOG.md index f5d541d223bc..2b3f4f07449c 100644 --- a/packages/@biomejs/cli-win32-x64/CHANGELOG.md +++ b/packages/@biomejs/cli-win32-x64/CHANGELOG.md @@ -1,5 +1,7 @@ # @biomejs/cli-win32-x64 +## 2.4.2 + ## 2.4.1 ## 2.4.0 diff --git a/packages/@biomejs/cli-win32-x64/package.json b/packages/@biomejs/cli-win32-x64/package.json index 2a48a27f23a0..a3fdd018cbe6 100644 --- a/packages/@biomejs/cli-win32-x64/package.json +++ b/packages/@biomejs/cli-win32-x64/package.json @@ -1,6 +1,6 @@ { "name": "@biomejs/cli-win32-x64", - "version": "2.4.1", + "version": "2.4.2", "license": "MIT OR Apache-2.0", "repository": { "type": "git", diff --git a/packages/@biomejs/js-api/package.json b/packages/@biomejs/js-api/package.json index c2a15d62ce3b..2fe746f242d5 100644 --- a/packages/@biomejs/js-api/package.json +++ b/packages/@biomejs/js-api/package.json @@ -73,9 +73,9 @@ "vitest": "4.0.18" }, "peerDependencies": { - "@biomejs/wasm-bundler": "^2.4.1", - "@biomejs/wasm-nodejs": "^2.4.1", - "@biomejs/wasm-web": "^2.4.1" + "@biomejs/wasm-bundler": "^2.4.2", + "@biomejs/wasm-nodejs": "^2.4.2", + "@biomejs/wasm-web": "^2.4.2" }, "peerDependenciesMeta": { "@biomejs/wasm-bundler": { diff --git a/packages/@biomejs/wasm-bundler/CHANGELOG.md b/packages/@biomejs/wasm-bundler/CHANGELOG.md index 51e3f5e4f0d0..04d33656e72b 100644 --- a/packages/@biomejs/wasm-bundler/CHANGELOG.md +++ b/packages/@biomejs/wasm-bundler/CHANGELOG.md @@ -1,5 +1,7 @@ # @biomejs/wasm-bundler +## 2.4.2 + ## 2.4.1 ## 2.4.0 diff --git a/packages/@biomejs/wasm-bundler/package.json b/packages/@biomejs/wasm-bundler/package.json index 2e5d764d4410..040effffa7f4 100644 --- a/packages/@biomejs/wasm-bundler/package.json +++ b/packages/@biomejs/wasm-bundler/package.json @@ -5,7 +5,7 @@ "Biome Developers and Contributors" ], "description": "WebAssembly bindings to the Biome workspace API", - "version": "2.4.1", + "version": "2.4.2", "license": "MIT OR Apache-2.0", "repository": { "type": "git", diff --git a/packages/@biomejs/wasm-nodejs/CHANGELOG.md b/packages/@biomejs/wasm-nodejs/CHANGELOG.md index 7cedaee85f56..8e9d29667039 100644 --- a/packages/@biomejs/wasm-nodejs/CHANGELOG.md +++ b/packages/@biomejs/wasm-nodejs/CHANGELOG.md @@ -1,5 +1,7 @@ # @biomejs/wasm-nodejs +## 2.4.2 + ## 2.4.1 ## 2.4.0 diff --git a/packages/@biomejs/wasm-nodejs/package.json b/packages/@biomejs/wasm-nodejs/package.json index c23fb5d293ba..f5346c2d3bc7 100644 --- a/packages/@biomejs/wasm-nodejs/package.json +++ b/packages/@biomejs/wasm-nodejs/package.json @@ -4,7 +4,7 @@ "Biome Developers and Contributors" ], "description": "WebAssembly bindings to the Biome workspace API", - "version": "2.4.1", + "version": "2.4.2", "license": "MIT OR Apache-2.0", "repository": { "type": "git", diff --git a/packages/@biomejs/wasm-web/CHANGELOG.md b/packages/@biomejs/wasm-web/CHANGELOG.md index 23a3c1e1e99a..90766a4da66f 100644 --- a/packages/@biomejs/wasm-web/CHANGELOG.md +++ b/packages/@biomejs/wasm-web/CHANGELOG.md @@ -1,5 +1,7 @@ # @biomejs/wasm-web +## 2.4.2 + ## 2.4.1 ## 2.4.0 diff --git a/packages/@biomejs/wasm-web/package.json b/packages/@biomejs/wasm-web/package.json index 50cc6406874c..910b95ced370 100644 --- a/packages/@biomejs/wasm-web/package.json +++ b/packages/@biomejs/wasm-web/package.json @@ -5,7 +5,7 @@ "Biome Developers and Contributors" ], "description": "WebAssembly bindings to the Biome workspace API", - "version": "2.4.1", + "version": "2.4.2", "license": "MIT OR Apache-2.0", "repository": { "type": "git", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0ce6957f1600..eb4ee6035216 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,55 +64,55 @@ importers: version: 4.0.18(@types/node@24.10.9)(happy-dom@20.4.0)(jiti@2.6.1)(yaml@2.8.2) optionalDependencies: '@biomejs/cli-darwin-arm64': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-darwin-arm64 '@biomejs/cli-darwin-x64': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-darwin-x64 '@biomejs/cli-linux-arm64': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-linux-arm64 '@biomejs/cli-linux-arm64-musl': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-linux-arm64-musl '@biomejs/cli-linux-x64': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-linux-x64 '@biomejs/cli-linux-x64-musl': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-linux-x64-musl '@biomejs/cli-win32-arm64': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-win32-arm64 '@biomejs/cli-win32-x64': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-win32-x64 packages/@biomejs/biome: optionalDependencies: '@biomejs/cli-darwin-arm64': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-darwin-arm64 '@biomejs/cli-darwin-x64': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-darwin-x64 '@biomejs/cli-linux-arm64': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-linux-arm64 '@biomejs/cli-linux-arm64-musl': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-linux-arm64-musl '@biomejs/cli-linux-x64': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-linux-x64 '@biomejs/cli-linux-x64-musl': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-linux-x64-musl '@biomejs/cli-win32-arm64': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-win32-arm64 '@biomejs/cli-win32-x64': - specifier: 2.4.1 + specifier: 2.4.2 version: link:../cli-win32-x64 packages/@biomejs/cli-darwin-arm64: {}