From 5ffc880c3a6ca4bc687694aac6990fa3ea73eaa6 Mon Sep 17 00:00:00 2001 From: Artem Astapenko <3767150+Jamakase@users.noreply.github.com> Date: Thu, 6 Jan 2022 13:17:34 +0300 Subject: [PATCH] Some updated for e2e tests (#9091) --- airbyte-webapp-e2e-tests/cypress/global.d.ts | 11 +++++++++ .../cypress/support/commands/common.js | 6 +++++ .../support/commands/{index.js => index.ts} | 1 + .../cypress/support/commands/sidebar.ts | 3 +++ airbyte-webapp-e2e-tests/package-lock.json | 22 +++++++++++++++++- airbyte-webapp-e2e-tests/package.json | 1 + airbyte-webapp-e2e-tests/tsconfig.json | 23 +++++++++++++++++++ .../src/components/SideMenu/SideMenu.tsx | 4 ++-- .../SideMenu/components/MenuItem.tsx | 12 +++------- .../views/settings/CloudSettingsPage.tsx | 1 + 10 files changed, 72 insertions(+), 12 deletions(-) create mode 100644 airbyte-webapp-e2e-tests/cypress/global.d.ts rename airbyte-webapp-e2e-tests/cypress/support/commands/{index.js => index.ts} (80%) create mode 100644 airbyte-webapp-e2e-tests/cypress/support/commands/sidebar.ts create mode 100644 airbyte-webapp-e2e-tests/tsconfig.json diff --git a/airbyte-webapp-e2e-tests/cypress/global.d.ts b/airbyte-webapp-e2e-tests/cypress/global.d.ts new file mode 100644 index 0000000000000..57c2e680c1551 --- /dev/null +++ b/airbyte-webapp-e2e-tests/cypress/global.d.ts @@ -0,0 +1,11 @@ +declare global { + namespace Cypress { + interface Chainable { + clearApp(): Chainable; + + // sidebar + + openSettings(): Chainable; + } + } +} diff --git a/airbyte-webapp-e2e-tests/cypress/support/commands/common.js b/airbyte-webapp-e2e-tests/cypress/support/commands/common.js index a05dee4a53937..c305c6f4c4445 100644 --- a/airbyte-webapp-e2e-tests/cypress/support/commands/common.js +++ b/airbyte-webapp-e2e-tests/cypress/support/commands/common.js @@ -55,3 +55,9 @@ Cypress.Commands.add("deleteEntity", () => { cy.get("button[data-id='open-delete-modal']").click(); cy.get("button[data-id='delete']").click(); }) + +Cypress.Commands.add("clearApp", () => { + indexedDB.deleteDatabase("firebaseLocalStorageDb"); + cy.clearLocalStorage(); + cy.clearCookies(); +}); diff --git a/airbyte-webapp-e2e-tests/cypress/support/commands/index.js b/airbyte-webapp-e2e-tests/cypress/support/commands/index.ts similarity index 80% rename from airbyte-webapp-e2e-tests/cypress/support/commands/index.js rename to airbyte-webapp-e2e-tests/cypress/support/commands/index.ts index 22bd544cc480c..3ffc02becb89b 100644 --- a/airbyte-webapp-e2e-tests/cypress/support/commands/index.js +++ b/airbyte-webapp-e2e-tests/cypress/support/commands/index.ts @@ -1,4 +1,5 @@ import "./common"; +import "./sidebar"; import "./source"; import "./destination"; import "./connection"; diff --git a/airbyte-webapp-e2e-tests/cypress/support/commands/sidebar.ts b/airbyte-webapp-e2e-tests/cypress/support/commands/sidebar.ts new file mode 100644 index 0000000000000..39ddd9a8cc547 --- /dev/null +++ b/airbyte-webapp-e2e-tests/cypress/support/commands/sidebar.ts @@ -0,0 +1,3 @@ +Cypress.Commands.add("openSettings", () => { + cy.get("nav a[href*='settings']").click(); +}); diff --git a/airbyte-webapp-e2e-tests/package-lock.json b/airbyte-webapp-e2e-tests/package-lock.json index 9829809eaf757..a945bc04aac91 100644 --- a/airbyte-webapp-e2e-tests/package-lock.json +++ b/airbyte-webapp-e2e-tests/package-lock.json @@ -9,7 +9,8 @@ "version": "0.0.0", "devDependencies": { "cypress": "^9.2.0", - "eslint-plugin-cypress": "^2.12.1" + "eslint-plugin-cypress": "^2.12.1", + "typescript": "^4.5.4" } }, "node_modules/@cypress/request": { @@ -2344,6 +2345,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typescript": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", + "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -4281,6 +4295,12 @@ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, + "typescript": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", + "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", + "dev": true + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", diff --git a/airbyte-webapp-e2e-tests/package.json b/airbyte-webapp-e2e-tests/package.json index 432b0287607c7..25eff6858bffa 100644 --- a/airbyte-webapp-e2e-tests/package.json +++ b/airbyte-webapp-e2e-tests/package.json @@ -20,6 +20,7 @@ }, "devDependencies": { "cypress": "^9.2.0", + "typescript": "^4.5.4", "eslint-plugin-cypress": "^2.12.1" } } diff --git a/airbyte-webapp-e2e-tests/tsconfig.json b/airbyte-webapp-e2e-tests/tsconfig.json new file mode 100644 index 0000000000000..49720291df092 --- /dev/null +++ b/airbyte-webapp-e2e-tests/tsconfig.json @@ -0,0 +1,23 @@ +{ + "include": ["./**/*.ts"], + "exclude": [], + "compilerOptions": { + "baseUrl": "src", + "target": "es5", + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "jsx": "react-jsx", + "noFallthroughCasesInSwitch": true, + "types": ["cypress"], + "lib": ["es2015", "dom"], + "isolatedModules": false, + "allowJs": true, + "noEmit": true + } +} diff --git a/airbyte-webapp/src/components/SideMenu/SideMenu.tsx b/airbyte-webapp/src/components/SideMenu/SideMenu.tsx index a5e84f9592e3b..fef8a8f939e74 100644 --- a/airbyte-webapp/src/components/SideMenu/SideMenu.tsx +++ b/airbyte-webapp/src/components/SideMenu/SideMenu.tsx @@ -8,7 +8,7 @@ export type SideMenuItem = { name: string | React.ReactNode; indicatorCount?: number; component: React.ComponentType; - testId?: string; + id?: string; }; export type CategoryItem = { @@ -49,7 +49,7 @@ const SideMenu: React.FC = ({ data, onSelect, activeItem }) => { )} {categoryItem.routes.map((route) => ( void; }; @@ -40,15 +40,9 @@ const Counter = styled.div` margin-left: 5px; `; -const MenuItem: React.FC = ({ - count, - isActive, - name, - testId, - onClick, -}) => { +const MenuItem: React.FC = ({ count, isActive, name, id, onClick }) => { return ( - + {name} {count ? {count} : null} diff --git a/airbyte-webapp/src/packages/cloud/views/settings/CloudSettingsPage.tsx b/airbyte-webapp/src/packages/cloud/views/settings/CloudSettingsPage.tsx index aa4665e5e1d9e..57ef1e568cfe7 100644 --- a/airbyte-webapp/src/packages/cloud/views/settings/CloudSettingsPage.tsx +++ b/airbyte-webapp/src/packages/cloud/views/settings/CloudSettingsPage.tsx @@ -72,6 +72,7 @@ export const CloudSettingsPage: React.FC = () => { path: CloudSettingsRoutes.AccessManagement, name: , component: UsersSettingsView, + id: "workspaceSettings.accessManagementSettings", }, { path: CloudSettingsRoutes.Notifications,