From adbf6d2e5a2293d27938cdb7b7df14012fca5706 Mon Sep 17 00:00:00 2001 From: Brody McKee Date: Mon, 4 Mar 2024 15:25:18 +1100 Subject: [PATCH] feat(eslint): update `eslint-plugin-playwright` BREAKING_CHANGE: Enabled rules for `eslint-plugin-playwright` have changed. --- eslint/playwright-test.js | 9 +++++---- eslint/rules/playwright-test.js | 15 ++++++++------- package.json | 2 +- pnpm-lock.yaml | 27 ++++++++++++++++++--------- 4 files changed, 32 insertions(+), 21 deletions(-) diff --git a/eslint/playwright-test.js b/eslint/playwright-test.js index 35577df..b4e37c8 100644 --- a/eslint/playwright-test.js +++ b/eslint/playwright-test.js @@ -1,6 +1,7 @@ module.exports = { - extends: [ - 'plugin:playwright/playwright-test', - require.resolve('./rules/playwright-test.js'), - ], + plugins: ['playwright'], + extends: [require.resolve('./rules/playwright-test.js')], + env: { + 'shared-node-browser': true, + }, }; diff --git a/eslint/rules/playwright-test.js b/eslint/rules/playwright-test.js index 3812cab..1018ffd 100644 --- a/eslint/rules/playwright-test.js +++ b/eslint/rules/playwright-test.js @@ -1,9 +1,10 @@ -// Source: https://github.com/playwright-community/eslint-plugin-playwright/blob/main/src/index.ts +// Source: https://github.com/playwright-community/eslint-plugin-playwright/blob/v1.5.1/src/index.ts#L101-L129 const recommended = { 'no-empty-pattern': 'off', 'playwright/expect-expect': 'warn', 'playwright/max-nested-describe': 'warn', 'playwright/missing-playwright-await': 'error', + 'playwright/no-conditional-expect': 'warn', 'playwright/no-conditional-in-test': 'warn', 'playwright/no-element-handle': 'warn', 'playwright/no-eval': 'warn', @@ -13,11 +14,17 @@ const recommended = { 'playwright/no-networkidle': 'error', 'playwright/no-page-pause': 'warn', 'playwright/no-skipped-test': 'warn', + 'playwright/no-standalone-expect': 'error', + 'playwright/no-unsafe-references': 'error', 'playwright/no-useless-await': 'warn', 'playwright/no-useless-not': 'warn', + 'playwright/no-wait-for-selector': 'warn', 'playwright/no-wait-for-timeout': 'warn', 'playwright/prefer-web-first-assertions': 'error', + 'playwright/valid-describe-callback': 'error', 'playwright/valid-expect': 'error', + 'playwright/valid-expect-in-promise': 'error', + 'playwright/valid-title': 'error', }; module.exports = { @@ -35,11 +42,5 @@ module.exports = { * 🔧 Fixable - https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-lowercase-title.md */ 'playwright/prefer-to-have-length': 'warn', - /** - * Require test cases and hooks to be inside a `test.describe` block. - * - * 🚫 Not fixable - https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-lowercase-title.md - */ - 'playwright/require-top-level-describe': 'error', }, }; diff --git a/package.json b/package.json index 2dc0727..15c1e22 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "eslint-plugin-import": "^2.28.1", "eslint-plugin-jest": "^27.2.3", "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-playwright": "^0.16.0", + "eslint-plugin-playwright": "^1.5.1", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-testing-library": "^6.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 818bfc0..c759f6b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,8 +45,8 @@ dependencies: specifier: ^6.7.1 version: 6.7.1(eslint@8.48.0) eslint-plugin-playwright: - specifier: ^0.16.0 - version: 0.16.0(eslint-plugin-jest@27.2.3)(eslint@8.48.0) + specifier: ^1.5.1 + version: 1.5.1(eslint-plugin-jest@27.2.3)(eslint@8.48.0) eslint-plugin-react: specifier: ^7.33.2 version: 7.33.2(eslint@8.48.0) @@ -2221,10 +2221,11 @@ packages: semver: 6.3.1 dev: false - /eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.2.3)(eslint@8.48.0): - resolution: {integrity: sha512-DcHpF0SLbNeh9MT4pMzUGuUSnJ7q5MWbP8sSEFIMS6j7Ggnduq8ghNlfhURgty4c1YFny7Ge9xYTO1FSAoV2Vw==} + /eslint-plugin-playwright@1.5.1(eslint-plugin-jest@27.2.3)(eslint@8.48.0): + resolution: {integrity: sha512-2cHnSYMmxVRHALlwM1LjFpHaptYufokUKJDqccVILaAVI+SdS5z7msjD3gv8l6How4ux/rvxeS4lXu9OrpOXhg==} + engines: {node: '>=16.6.0'} peerDependencies: - eslint: '>=7' + eslint: '>=8.40.0' eslint-plugin-jest: '>=25' peerDependenciesMeta: eslint-plugin-jest: @@ -2232,6 +2233,7 @@ packages: dependencies: eslint: 8.48.0 eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@6.5.0)(eslint@8.48.0)(typescript@5.2.2) + globals: 13.24.0 dev: false /eslint-plugin-react-hooks@4.6.0(eslint@8.48.0): @@ -2746,6 +2748,13 @@ packages: dependencies: type-fest: 0.20.2 + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: false + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -4183,7 +4192,7 @@ packages: dependencies: find-up: 6.3.0 read-pkg: 8.1.0 - type-fest: 4.3.1 + type-fest: 4.10.3 dev: true /read-pkg-up@7.0.1: @@ -4210,7 +4219,7 @@ packages: '@types/normalize-package-data': 2.4.1 normalize-package-data: 6.0.0 parse-json: 7.0.0 - type-fest: 4.3.1 + type-fest: 4.10.3 dev: true /readable-stream@2.3.8: @@ -4921,8 +4930,8 @@ packages: engines: {node: '>=14.16'} dev: true - /type-fest@4.3.1: - resolution: {integrity: sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw==} + /type-fest@4.10.3: + resolution: {integrity: sha512-JLXyjizi072smKGGcZiAJDCNweT8J+AuRxmPZ1aG7TERg4ijx9REl8CNhbr36RV4qXqL1gO1FF9HL8OkVmmrsA==} engines: {node: '>=16'} dev: true