From 0e6e702ca64ff7089f9064c32a9959eb3b8ab7e7 Mon Sep 17 00:00:00 2001 From: Maxime Beauchemin Date: Sat, 20 Jan 2024 13:40:03 -0800 Subject: [PATCH] chore: fix GitHub 'Unchanged files with check annotations' reports in PR --- .github/workflows/superset-frontend.yml | 1 + .github/workflows/superset-websocket.yml | 3 ++ CONTRIBUTING.md | 3 ++ docs/docs/contributing/hooks-and-linting.mdx | 3 ++ .../cypress/e2e/dashboard/drillby.test.ts | 1 + .../cypress/e2e/dashboard/editmode.test.ts | 1 + .../cypress-base/cypress/support/e2e.ts | 2 ++ .../cypress-base/cypress/utils/index.ts | 29 +++++++++++-------- .../cypress-base/cypress/utils/vizPlugins.ts | 1 + superset-frontend/js_build.sh | 1 + superset-frontend/package.json | 7 +++-- superset-frontend/scripts/build.js | 1 + 12 files changed, 38 insertions(+), 15 deletions(-) diff --git a/.github/workflows/superset-frontend.yml b/.github/workflows/superset-frontend.yml index 35e1a989a4179..047d07bd8ad7b 100644 --- a/.github/workflows/superset-frontend.yml +++ b/.github/workflows/superset-frontend.yml @@ -41,6 +41,7 @@ jobs: working-directory: ./superset-frontend run: | npm run lint -- --quiet + npm run type npm run prettier-check - name: Build plugins packages if: steps.check.outcome == 'failure' diff --git a/.github/workflows/superset-websocket.yml b/.github/workflows/superset-websocket.yml index 73a532cb98108..84df2c5010d62 100644 --- a/.github/workflows/superset-websocket.yml +++ b/.github/workflows/superset-websocket.yml @@ -21,6 +21,9 @@ jobs: - name: lint working-directory: ./superset-websocket run: npm run lint + - name: typescript checks + working-directory: ./superset-websocket + run: npm run type - name: prettier working-directory: ./superset-websocket run: npm run prettier-check diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index de40865edc7da..5f72458d71a08 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -788,7 +788,10 @@ is configured as a pre-commit hook. There are also numerous [editor integrations ```bash cd superset-frontend npm ci +# run eslint checks npm run lint +# run tsc checks +npm run type ``` If using the eslint extension with vscode, put the following in your workspace `settings.json` file: diff --git a/docs/docs/contributing/hooks-and-linting.mdx b/docs/docs/contributing/hooks-and-linting.mdx index 509a12ac11127..b26701a0f1882 100644 --- a/docs/docs/contributing/hooks-and-linting.mdx +++ b/docs/docs/contributing/hooks-and-linting.mdx @@ -49,7 +49,10 @@ is configured as a pre-commit hook. There are also numerous [editor integrations ```bash cd superset-frontend npm ci +# run eslint checks npm run lint +# run tsc (typescript) checks +npm run type ``` If using the eslint extension with vscode, put the following in your workspace `settings.json` file: diff --git a/superset-frontend/cypress-base/cypress/e2e/dashboard/drillby.test.ts b/superset-frontend/cypress-base/cypress/e2e/dashboard/drillby.test.ts index c365f66b4a463..50dd7180cf488 100644 --- a/superset-frontend/cypress-base/cypress/e2e/dashboard/drillby.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/dashboard/drillby.test.ts @@ -77,6 +77,7 @@ const drillBy = (targetDrillByColumn: string, isLegacy = false) => { const verifyExpectedFormData = ( interceptedRequest: Interception, + // eslint-disable-next-line @typescript-eslint/no-explicit-any expectedFormData: Record, ) => { const actualFormData = interceptedRequest.request.body?.form_data; diff --git a/superset-frontend/cypress-base/cypress/e2e/dashboard/editmode.test.ts b/superset-frontend/cypress-base/cypress/e2e/dashboard/editmode.test.ts index 62bab84d1b85c..228fa1ec0a5c0 100644 --- a/superset-frontend/cypress-base/cypress/e2e/dashboard/editmode.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/dashboard/editmode.test.ts @@ -88,6 +88,7 @@ function visitEdit(sampleDashboard = SAMPLE_DASHBOARD_1) { } function resetTabbedDashboard(go = false) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any cy.getDashboard('tabbed_dash').then((r: Record) => { const jsonMetadata = r?.json_metadata || '{}'; const metadata = JSON.parse(jsonMetadata); diff --git a/superset-frontend/cypress-base/cypress/support/e2e.ts b/superset-frontend/cypress-base/cypress/support/e2e.ts index cccc7b2005737..6556d8e5eb92b 100644 --- a/superset-frontend/cypress-base/cypress/support/e2e.ts +++ b/superset-frontend/cypress-base/cypress/support/e2e.ts @@ -20,6 +20,8 @@ import '@cypress/code-coverage/support'; import '@applitools/eyes-cypress/commands'; import failOnConsoleError from 'cypress-fail-on-console-error'; +/* eslint-disable @typescript-eslint/no-explicit-any */ + require('cy-verify-downloads').addCustomCommand(); // fail on console error, allow config to override individual tests diff --git a/superset-frontend/cypress-base/cypress/utils/index.ts b/superset-frontend/cypress-base/cypress/utils/index.ts index 2f06efc22c25e..3ad7f7bb82bcd 100644 --- a/superset-frontend/cypress-base/cypress/utils/index.ts +++ b/superset-frontend/cypress-base/cypress/utils/index.ts @@ -41,12 +41,23 @@ export function clearAllInputs() { }); } -const toSlicelike = ($chart: JQuery): Slice => ({ - slice_id: parseInt($chart.attr('data-test-chart-id')!, 10), - form_data: { - viz_type: $chart.attr('data-test-viz-type')!, - }, -}); +const toSlicelike = ($chart: JQuery): Slice => { + const chartId = $chart.attr('data-test-chart-id'); + const vizType = $chart.attr('data-test-viz-type'); + + return { + slice_id: chartId ? parseInt(chartId, 10) : null, + form_data: { + viz_type: vizType || null, + }, + }; +}; + +export function getChartGridComponent({ name, viz }: ChartSpec) { + return cy + .get(`[data-test-chart-name="${name}"]`) + .should('have.attr', 'data-test-viz-type', viz); +} export function getChartAliasBySpec(chart: ChartSpec) { return getChartGridComponent(chart).then($chart => @@ -67,12 +78,6 @@ export function getChartAliasesBySpec(charts: readonly ChartSpec[]) { return cy.wrap(aliases); } -export function getChartGridComponent({ name, viz }: ChartSpec) { - return cy - .get(`[data-test-chart-name="${name}"]`) - .should('have.attr', 'data-test-viz-type', viz); -} - export function waitForChartLoad(chart: ChartSpec) { return getChartGridComponent(chart).then(gridComponent => { const chartId = gridComponent.attr('data-test-chart-id'); diff --git a/superset-frontend/cypress-base/cypress/utils/vizPlugins.ts b/superset-frontend/cypress-base/cypress/utils/vizPlugins.ts index 36a837476c396..c67da1afd5fd5 100644 --- a/superset-frontend/cypress-base/cypress/utils/vizPlugins.ts +++ b/superset-frontend/cypress-base/cypress/utils/vizPlugins.ts @@ -49,6 +49,7 @@ export function isLegacyChart(vizType: string): boolean { return !V1_PLUGINS.includes(vizType); } +// eslint-disable-next-line @typescript-eslint/no-explicit-any export function isLegacyResponse(response: any): boolean { return !response.result; } diff --git a/superset-frontend/js_build.sh b/superset-frontend/js_build.sh index f664ffd59b371..cbd994dd51ea1 100755 --- a/superset-frontend/js_build.sh +++ b/superset-frontend/js_build.sh @@ -21,5 +21,6 @@ npm --version node --version time npm ci time npm run lint +time npm run check time npm run cover # this also runs the tests, so no need to 'npm run test' time npm run build diff --git a/superset-frontend/package.json b/superset-frontend/package.json index 8abd9dd955401..982eecd7f7922 100644 --- a/superset-frontend/package.json +++ b/superset-frontend/package.json @@ -37,7 +37,7 @@ "src/setup/*" ], "scripts": { - "_lint": "eslint --ignore-path=.eslintignore --ext .js,.jsx,.ts,tsx .", + "_lint": "eslint --ignore-path=.eslintignore --ext .js,.jsx,.ts,tsx", "_prettier": "prettier './({src,spec,cypress-base,plugins,packages,.storybook}/**/*{.js,.jsx,.ts,.tsx,.css,.less,.scss,.sass}|package.json)'", "build": "cross-env NODE_OPTIONS=--max_old_space_size=8192 NODE_ENV=production BABEL_ENV=\"${BABEL_ENV:=production}\" webpack --mode=production --color", "build-dev": "cross-env NODE_OPTIONS=--max_old_space_size=8192 NODE_ENV=development webpack --mode=development --color", @@ -51,8 +51,9 @@ "dev": "webpack --mode=development --color --watch", "dev-server": "cross-env NODE_ENV=development BABEL_ENV=development node --max_old_space_size=4096 ./node_modules/webpack-dev-server/bin/webpack-dev-server.js --mode=development", "format": "npm run _prettier -- --write", - "lint": "npm run _lint && npm run type", - "lint-fix": "npm run _lint -- --fix && npm run type", + "lint": "npm run _lint -- .", + "lint-fix": "npm run _lint -- --fix", + "lint-file": "npm run _lint", "plugins:build": "node ./scripts/build.js", "plugins:build-assets": "node ./scripts/copyAssets.js", "plugins:build-storybook": "cd packages/superset-ui-demo && npm run build-storybook", diff --git a/superset-frontend/scripts/build.js b/superset-frontend/scripts/build.js index 0c327e8c50a3b..068aa01ef10ef 100644 --- a/superset-frontend/scripts/build.js +++ b/superset-frontend/scripts/build.js @@ -107,6 +107,7 @@ let scope = getPackages(glob); if (shouldLint) { run(`npm run lint --fix {packages,plugins}/${scope}/{src,test}`); + run(`npm run type`); } if (shouldCleanup) {