From 6a66fcf17a2da3caadf2befcac010462a17818d1 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sun, 8 Oct 2023 17:13:40 -0400 Subject: [PATCH] build: remove playwright --- .github/workflows/ci.yml | 53 -------------- .gitignore | 3 - .prettierignore | 1 - package.json | 1 - packages/website/package.json | 3 - packages/website/playwright.config.ts | 32 --------- packages/website/tests/index.spec.ts | 38 ---------- packages/website/tests/playground.spec.ts | 84 ----------------------- packages/website/tests/rules.spec.ts | 32 --------- yarn.lock | 44 +----------- 10 files changed, 3 insertions(+), 288 deletions(-) delete mode 100644 packages/website/playwright.config.ts delete mode 100644 packages/website/tests/index.spec.ts delete mode 100644 packages/website/tests/playground.spec.ts delete mode 100644 packages/website/tests/rules.spec.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 51cbca79ec7b..a7f281997d3f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -240,59 +240,6 @@ jobs: CI: true TYPESCRIPT_ESLINT_EXPERIMENTAL_TSSERVER: true - website_tests: - permissions: - contents: read # to fetch code (actions/checkout) - - name: Website tests - # We technically do not need to wait for build within the pipeline any more because the build we care about is happening within Netlify, however, - # it is highly likely that if the CI one fails, the Netlify one will as well, so in order to not waste unncessary Github Actions minutes/resources, - # we do still keep this requirement here. - needs: [build] - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 2 - - - name: Install - uses: ./.github/actions/prepare-install - with: - node-version: ${{ env.PRIMARY_NODE_VERSION }} - - - name: Build website - if: github.repository != 'typescript-eslint/typescript-eslint' || github.ref != 'refs/heads/main' - run: NX_VERBOSE_LOGGING=true yarn nx build website - - - name: Install Playwright Browsers - run: npx playwright install --with-deps chromium - - - name: Wait for Netlify deployment - if: github.repository == 'typescript-eslint/typescript-eslint' && github.ref == 'refs/heads/main' - uses: ./.github/actions/wait-for-netlify - id: waitForDeployment - with: - netlify_token: ${{ secrets.NETLIFY_TOKEN }} - - - name: Run Playwright tests against the Netlify deployment - if: github.repository == 'typescript-eslint/typescript-eslint' && github.ref == 'refs/heads/main' - run: yarn playwright test --reporter=list - working-directory: packages/website - env: - PLAYWRIGHT_TEST_BASE_URL: ${{ steps.waitForDeployment.outputs.url }} - - - name: Run Playwright tests against local deployment - if: github.repository != 'typescript-eslint/typescript-eslint' || github.ref != 'refs/heads/main' - run: yarn playwright test --reporter=list - working-directory: packages/website - - - if: always() - uses: actions/upload-artifact@v3 - with: - name: playwright-report - path: packages/website/playwright-report - upload_coverage: name: Upload Codecov Coverage needs: [unit_tests] diff --git a/.gitignore b/.gitignore index fb6fcf441bdd..4756d89c4232 100644 --- a/.gitignore +++ b/.gitignore @@ -9,10 +9,7 @@ yarn-error.log* packages/website/.docusaurus packages/website/.cache-loader packages/website/build -packages/website/playwright-report -packages/website/playwright/.cache packages/website/static/sandbox -packages/website/test-results # Runtime data pids diff --git a/.prettierignore b/.prettierignore index dc8cabea0d18..bb98ef6ac961 100644 --- a/.prettierignore +++ b/.prettierignore @@ -29,7 +29,6 @@ CHANGELOG.md packages/website/.docusaurus packages/website/build -packages/website/playwright-report # see the file header in eslint-base.test.js for more info packages/rule-tester/tests/eslint-base diff --git a/package.json b/package.json index a3162ea9d381..972b72dc1b23 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,6 @@ "start": "nx run website:start", "test": "nx run-many --target=test --parallel --exclude integration-tests --exclude website --exclude website-eslint", "test-integration": "nx run integration-tests:test", - "test-website": "nx run-many --target=test --projects=website,website-eslint", "typecheck": "nx run-many --target=typecheck --parallel" }, "engines": { diff --git a/packages/website/package.json b/packages/website/package.json index 2fc26380dccb..b13f9178dbdd 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -13,7 +13,6 @@ "serve": "docusaurus serve", "start": "nx start", "swizzle": "docusaurus swizzle", - "test": "playwright test", "typecheck": "tsc -b ./tsconfig.json" }, "dependencies": { @@ -46,9 +45,7 @@ "react": "^18.2.0" }, "devDependencies": { - "@axe-core/playwright": "^4.7.3", "@docusaurus/module-type-aliases": "~2.4.1", - "@playwright/test": "^1.36.0", "@types/react": "*", "@types/react-helmet": "^6.1.6", "@types/react-router-dom": "^5.3.3", diff --git a/packages/website/playwright.config.ts b/packages/website/playwright.config.ts deleted file mode 100644 index fa403223152b..000000000000 --- a/packages/website/playwright.config.ts +++ /dev/null @@ -1,32 +0,0 @@ -import type { PlaywrightTestConfig } from '@playwright/test'; -import { devices } from '@playwright/test'; - -const config: PlaywrightTestConfig = { - forbidOnly: !!process.env.CI, - fullyParallel: true, - reporter: 'html', - retries: 0, - testDir: './tests', - use: { - baseURL: process.env.PLAYWRIGHT_TEST_BASE_URL ?? 'http://localhost:3000', - trace: 'on-first-retry', - }, - projects: [ - { - name: 'chromium', - use: { - ...devices['Desktop Chrome'], - }, - }, - ], - webServer: process.env.PLAYWRIGHT_TEST_BASE_URL - ? undefined - : { - command: 'yarn start', - port: 3000, - reuseExistingServer: !process.env.CI, - }, - workers: process.env.CI ? 1 : undefined, -}; - -export default config; diff --git a/packages/website/tests/index.spec.ts b/packages/website/tests/index.spec.ts deleted file mode 100644 index b29adeb4bc21..000000000000 --- a/packages/website/tests/index.spec.ts +++ /dev/null @@ -1,38 +0,0 @@ -import AxeBuilder from '@axe-core/playwright'; -import { expect, test } from '@playwright/test'; - -test.describe('Website', () => { - test.beforeEach(async ({ context }) => { - // Sponsor logos are sometimes changed or removed between deploys - await context.route('https://images.opencollective.com/**/*.png', route => - route.fulfill({ - status: 200, - body: '', - }), - ); - }); - - test('Axe', async ({ page }) => { - await page.goto('/'); - await new AxeBuilder({ page }).analyze(); - }); - - test('should have no errors', async ({ page }) => { - const errorMessages: string[] = []; - page.on('console', msg => { - const type = msg.type(); - if (!['error', 'warning'].includes(type)) { - return; - } - const text = msg.text(); - // this log is fine because the ReactDOM usage is controlled by docusaurus, not us - if (text.includes('ReactDOM.render is no longer supported in React 18')) { - return; - } - errorMessages.push(`[${type}] ${text}`); - }); - await page.goto('/', { waitUntil: 'domcontentloaded' }); - await expect(page).toHaveTitle('typescript-eslint'); - expect(errorMessages).toStrictEqual([]); - }); -}); diff --git a/packages/website/tests/playground.spec.ts b/packages/website/tests/playground.spec.ts deleted file mode 100644 index 67f679359db7..000000000000 --- a/packages/website/tests/playground.spec.ts +++ /dev/null @@ -1,84 +0,0 @@ -import AxeBuilder from '@axe-core/playwright'; -import type { Page } from '@playwright/test'; -import { expect, test } from '@playwright/test'; - -// TODO: fix these tests and reenable them -test.describe.skip('Playground', () => { - test.beforeEach(async ({ page }) => { - await page.goto('/play'); - }); - - test('Accessibility', async ({ page }) => { - await new AxeBuilder({ page }).analyze(); - }); - - test('Usage', async ({ page }) => { - // 1. Type some valid code in the playground - await writeInEditor(page, 'let value: string[];'); - - // 2. Enable a lint rule - await page.getByRole('tab', { name: 'eslintrc' }).click(); - await page.getByRole('button', { name: 'Visual Editor' }).click(); - await page - .getByLabel( - '@typescript-eslint/array-type Require consistently using either `T[]` or `Array` for arrays', - ) - .check(); - await page.getByRole('button', { name: 'Close' }).click(); - - // 3. Make sure it still says "All is ok!" - await expect(page.getByText('All is ok!')).toBeVisible(); - - // 4. Change the code to violate the lint rule - await page.getByRole('tab', { name: 'code' }).click(); - await writeInEditor(page, 'let value: Array;'); - - // 5. Make sure it now says the complaint - await expect( - page.getByText( - `Array type using 'Array' is forbidden. Use 'string[]' instead. 1:12 - 1:25`, - ), - ).toBeVisible(); - - // 6. Press the 'fix' button to autofix that complaint - await page.getByRole('button', { name: 'fix' }).click(); - - // 7. Make sure the code is updated, and it says "All is ok!" - await expect(page.getByText('let value: string[];')).toBeVisible(); - await expect(page.getByText('All is ok!')).toBeVisible(); - }); - - test('AST Viewer', async ({ page }) => { - // 1. Type some valid code in the playground - await writeInEditor(page, 'let value: Array;'); - - // 2. Enable AST viewer - await page - .getByRole('combobox', { name: 'AST Viewer' }) - .selectOption({ label: 'ESTree' }); - - // 3. Type some valid code in the playground - await writeInEditor(page, 'let value: Array;'); - - // 4. Validate variable declaration block exists in AST viewer - await expect( - page.getByRole('link', { name: 'VariableDeclaration' }), - ).toBeVisible(); - }); -}); - -async function writeInEditor(page: Page, text: string): Promise { - const monacoEditor = page.locator('.monaco-editor').nth(0); - await monacoEditor.click(); - - // Select all existing text and delete it first... - await page.keyboard.down('Control'); - await page.keyboard.down('A'); - await page.keyboard.up('Control'); - await page.keyboard.up('A'); - await page.keyboard.down('Delete'); - await page.keyboard.up('Delete'); - - // ...and then type in the text - await page.keyboard.type(text); -} diff --git a/packages/website/tests/rules.spec.ts b/packages/website/tests/rules.spec.ts deleted file mode 100644 index faba1bdd447a..000000000000 --- a/packages/website/tests/rules.spec.ts +++ /dev/null @@ -1,32 +0,0 @@ -import AxeBuilder from '@axe-core/playwright'; -import { expect, test } from '@playwright/test'; - -test.describe('Rules Page', () => { - test.beforeEach(async ({ page }) => { - await page.goto('/rules'); - }); - - test('Accessibility', async ({ page }) => { - await new AxeBuilder({ page }).analyze(); - }); - - test('Rules filters are saved to the URL', async ({ page }) => { - await page.getByText('🔧 fixable').first().click(); - await page.getByText('✅ recommended').first().click(); - await page.getByText('✅ recommended').first().click(); - - expect(new URL(page.url()).search).toBe( - '?supported-rules=xrecommended-fixable', - ); - }); - - test('Rules filters are read from the URL on page load', async ({ page }) => { - await page.goto('/rules?supported-rules=strict-xfixable'); - - const strict = page.getByText('🔒 strict').first(); - const fixable = page.getByText('🔧 fixable').first(); - - await expect(strict).toHaveAttribute('aria-label', /Current: include/); - await expect(fixable).toHaveAttribute('aria-label', /Current: exclude/); - }); -}); diff --git a/yarn.lock b/yarn.lock index 6cd44b1e1e7d..36ced340e72f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -233,17 +233,6 @@ __metadata: languageName: node linkType: hard -"@axe-core/playwright@npm:^4.7.3": - version: 4.7.3 - resolution: "@axe-core/playwright@npm:4.7.3" - dependencies: - axe-core: ^4.7.0 - peerDependencies: - playwright-core: ">= 1.0.0" - checksum: c913cf6a816af283fc733411013460656213cf6c0efffcc36db1fd2984ffac3d780efd0a9aabd3b41ce78e2a536fee9ba5436d19311f660067e4c3560677b115 - languageName: node - linkType: hard - "@babel/code-frame@npm:*, @babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.22.5, @babel/code-frame@npm:^7.8.3": version: 7.22.13 resolution: "@babel/code-frame@npm:7.22.13" @@ -4526,22 +4515,6 @@ __metadata: languageName: node linkType: hard -"@playwright/test@npm:^1.36.0": - version: 1.36.2 - resolution: "@playwright/test@npm:1.36.2" - dependencies: - "@types/node": "*" - fsevents: 2.3.2 - playwright-core: 1.36.2 - dependenciesMeta: - fsevents: - optional: true - bin: - playwright: cli.js - checksum: 659304e0bbbafb2fa36395fbd8bd2c5db2b7791bbb55fa62409946ec7ec726cf8fff89f2b8a1a74fe831bf50a8780a37a5322a1251a6f7db2a9220a57ac408f0 - languageName: node - linkType: hard - "@polka/url@npm:^1.0.0-next.20": version: 1.0.0-next.21 resolution: "@polka/url@npm:1.0.0-next.21" @@ -6935,7 +6908,7 @@ __metadata: languageName: node linkType: hard -"axe-core@npm:^4.6.2, axe-core@npm:^4.7.0": +"axe-core@npm:^4.6.2": version: 4.7.2 resolution: "axe-core@npm:4.7.2" checksum: 5d86fa0f45213b0e54cbb5d713ce885c4a8fe3a72b92dd915a47aa396d6fd149c4a87fec53aa978511f6d941402256cfeb26f2db35129e370f25a453c688655a @@ -10991,7 +10964,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:2.3.2, fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": version: 2.3.2 resolution: "fsevents@npm:2.3.2" dependencies: @@ -11001,7 +10974,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@2.3.2#~builtin, fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": +"fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": version: 2.3.2 resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=df0bf1" dependencies: @@ -16342,15 +16315,6 @@ __metadata: languageName: node linkType: hard -"playwright-core@npm:1.36.2": - version: 1.36.2 - resolution: "playwright-core@npm:1.36.2" - bin: - playwright-core: cli.js - checksum: 2193ce802ef93c28b9b5e11a0b1d7b60778c686015659978d1cbf0eb9cda2cdc85ec5575b887c1346e9d161cc2805bf27638d76a2f7f857dffeae968e6ceffcd - languageName: node - linkType: hard - "pluralize@npm:^8.0.0": version: 8.0.0 resolution: "pluralize@npm:8.0.0" @@ -20773,7 +20737,6 @@ __metadata: version: 0.0.0-use.local resolution: "website@workspace:packages/website" dependencies: - "@axe-core/playwright": ^4.7.3 "@babel/runtime": ^7.22.6 "@docusaurus/core": ~2.4.1 "@docusaurus/module-type-aliases": ~2.4.1 @@ -20782,7 +20745,6 @@ __metadata: "@docusaurus/remark-plugin-npm2yarn": ~2.4.1 "@docusaurus/theme-common": ~2.4.1 "@mdx-js/react": 1.6.22 - "@playwright/test": ^1.36.0 "@types/react": "*" "@types/react-helmet": ^6.1.6 "@types/react-router-dom": ^5.3.3