From 736ee019e6c76d96e04336f9dfa709342d4c5f35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Miko=C5=82ajczyk?= Date: Thu, 14 Nov 2024 22:36:33 +0100 Subject: [PATCH 1/7] oct-2141: onboarding TOS not accepted E2E --- .../e2e/_3onboardingTOSNotAccepted.cy.ts | 103 ++++++++++++++++++ client/cypress/utils/onboarding.ts | 4 +- 2 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 client/cypress/e2e/_3onboardingTOSNotAccepted.cy.ts diff --git a/client/cypress/e2e/_3onboardingTOSNotAccepted.cy.ts b/client/cypress/e2e/_3onboardingTOSNotAccepted.cy.ts new file mode 100644 index 0000000000..1bc289b944 --- /dev/null +++ b/client/cypress/e2e/_3onboardingTOSNotAccepted.cy.ts @@ -0,0 +1,103 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import chaiColors from 'chai-colors'; + +import { + beforeSetup, + checkChangeStepsByClickingEdgeOfTheScreenMoreThan25px, + checkChangeStepsByClickingEdgeOfTheScreenUpTo25px, + checkChangeStepsBySwipingOnScreenDifferenceLessThanl5px, + checkChangeStepsBySwipingOnScreenDifferenceMoreThanOrEqual5px, + checkChangeStepsWithArrowKeys, + checkCurrentElement, + checkProgressStepperSlimIsCurrentAndClickNext, + connectWalletOnboarding, +} from 'cypress/utils/onboarding'; +import viewports from 'cypress/utils/viewports'; +import { QUERY_KEYS } from 'src/api/queryKeys'; +import { + getStepsDecisionWindowClosed, + getStepsDecisionWindowOpen, +} from 'src/hooks/helpers/useOnboardingSteps/steps'; + +chai.use(chaiColors); + +Object.values(viewports).forEach(({ device, viewportWidth, viewportHeight }, index, arr) => { + describe(`onboarding (TOS not accepted): ${device}`, { viewportHeight, viewportWidth }, () => { + before(() => { + beforeSetup(); + }); + + beforeEach(() => { + connectWalletOnboarding(); + }); + + after(() => { + cy.disconnectMetamaskWalletFromAllDapps(); + }); + + it('onboarding TOS step should be first and active', () => { + checkCurrentElement(0, true); + cy.get('[data-test=ModalOnboardingTOS]').should('be.visible'); + }); + + it('user is not able to click through entire onboarding flow', () => { + cy.window().then(win => { + const isDecisionWindowOpen = win.clientReactQuery.getQueryData( + QUERY_KEYS.isDecisionWindowOpen, + ); + + const onboardingSteps = isDecisionWindowOpen + ? getStepsDecisionWindowOpen('2', '16 Jan') + : getStepsDecisionWindowClosed('2', '16 Jan'); + + for (let i = 1; i < onboardingSteps.length; i++) { + checkProgressStepperSlimIsCurrentAndClickNext(i, i === 1); + } + }); + }); + + it('user is not able to close the modal by clicking button in the top-right', () => { + cy.get('[data-test=ModalOnboarding]').should('be.visible'); + cy.get('[data-test=ModalOnboarding__Button]').click({ force: true }); + cy.get('[data-test=ModalOnboarding]').should('be.visible'); + }); + + it('renders every time page is refreshed', () => { + cy.get('[data-test=ModalOnboarding]').should('be.visible'); + cy.reload(); + cy.get('[data-test=ModalOnboarding]').should('be.visible'); + }); + + it('user cannot change steps with arrow keys (left, right)', () => { + checkChangeStepsWithArrowKeys(false); + }); + + it('user can change steps by clicking the edge of the screen (up to 25px from each edge)', () => { + checkChangeStepsByClickingEdgeOfTheScreenUpTo25px(false); + }); + + it('user cannot change steps by clicking the edge of the screen (more than 25px from each edge)', () => { + checkChangeStepsByClickingEdgeOfTheScreenMoreThan25px(false); + }); + + it('user cannot change steps by swiping on screen (difference more than or equal 5px)', () => { + checkChangeStepsBySwipingOnScreenDifferenceMoreThanOrEqual5px(false); + }); + + it('user cannot change steps by swiping on screen (difference less than 5px)', () => { + checkChangeStepsBySwipingOnScreenDifferenceLessThanl5px(false); + }); + + if (index === arr.length - 1) { + it('TOS acceptance changes onboarding step to next step and allows the user to close the modal by clicking button in the top-right', () => { + checkCurrentElement(0, true); + cy.get('[data-test=TOS_InputCheckbox]').check(); + cy.switchToMetamaskNotification(); + cy.confirmMetamaskSignatureRequest(); + checkCurrentElement(1, true); + cy.get('[data-test=ModalOnboarding__Button]').click(); + cy.get('[data-test=ModalOnboarding]').should('not.exist'); + }); + } + }); +}); diff --git a/client/cypress/utils/onboarding.ts b/client/cypress/utils/onboarding.ts index 0df6be01b2..77ba33951e 100644 --- a/client/cypress/utils/onboarding.ts +++ b/client/cypress/utils/onboarding.ts @@ -20,10 +20,10 @@ export const connectWalletOnboarding = (mockedTOSResponse?: boolean): Chainable< } cy.disconnectMetamaskWalletFromAllDapps(); - visitWithLoader(ROOT.absolute, ROOT_ROUTES.projects.absolute); + visitWithLoader(ROOT.absolute, ROOT_ROUTES.home.absolute); cy.wait(500); - cy.get('[data-test=MainLayout__Button--connect]').click(); + cy.get('[data-test=LayoutTopBar__Button]').click(); cy.wait(500); cy.get('[data-test=ConnectWallet__BoxRounded--browserWallet]').click(); cy.switchToMetamaskNotification(); From a45fcfdf4f669eaf1e6f05f2f322f762ef259f76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Miko=C5=82ajczyk?= Date: Tue, 19 Nov 2024 11:47:54 +0100 Subject: [PATCH 2/7] oct-2141: onboarding TOS not accepted E2E --- ...cy.ts => _6onboardingTOSNotAccepted.cy.ts} | 4 +- client/cypress/e2e/layoutNavbar.cy.ts | 158 ------------------ 2 files changed, 2 insertions(+), 160 deletions(-) rename client/cypress/e2e/{_3onboardingTOSNotAccepted.cy.ts => _6onboardingTOSNotAccepted.cy.ts} (95%) delete mode 100644 client/cypress/e2e/layoutNavbar.cy.ts diff --git a/client/cypress/e2e/_3onboardingTOSNotAccepted.cy.ts b/client/cypress/e2e/_6onboardingTOSNotAccepted.cy.ts similarity index 95% rename from client/cypress/e2e/_3onboardingTOSNotAccepted.cy.ts rename to client/cypress/e2e/_6onboardingTOSNotAccepted.cy.ts index 1bc289b944..df206402fc 100644 --- a/client/cypress/e2e/_3onboardingTOSNotAccepted.cy.ts +++ b/client/cypress/e2e/_6onboardingTOSNotAccepted.cy.ts @@ -22,7 +22,7 @@ import { chai.use(chaiColors); Object.values(viewports).forEach(({ device, viewportWidth, viewportHeight }, index, arr) => { - describe(`onboarding (TOS not accepted): ${device}`, { viewportHeight, viewportWidth }, () => { + describe(`Onboarding (TOS not accepted): ${device}`, { viewportHeight, viewportWidth }, () => { before(() => { beforeSetup(); }); @@ -72,7 +72,7 @@ Object.values(viewports).forEach(({ device, viewportWidth, viewportHeight }, ind checkChangeStepsWithArrowKeys(false); }); - it('user can change steps by clicking the edge of the screen (up to 25px from each edge)', () => { + it('user cannot change steps by clicking the edge of the screen (up to 25px from each edge)', () => { checkChangeStepsByClickingEdgeOfTheScreenUpTo25px(false); }); diff --git a/client/cypress/e2e/layoutNavbar.cy.ts b/client/cypress/e2e/layoutNavbar.cy.ts deleted file mode 100644 index 3e870ea343..0000000000 --- a/client/cypress/e2e/layoutNavbar.cy.ts +++ /dev/null @@ -1,158 +0,0 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import chaiColors from 'chai-colors'; - -import { mockCoinPricesServer, visitWithLoader } from 'cypress/utils/e2e'; -import viewports from 'cypress/utils/viewports'; -import { - HAS_ONBOARDING_BEEN_CLOSED, - IS_ONBOARDING_ALWAYS_VISIBLE, - IS_ONBOARDING_DONE, -} from 'src/constants/localStorageKeys'; -import { ROOT, ROOT_ROUTES } from 'src/routes/RootRoutes/routes'; - -chai.use(chaiColors); - -Object.values(viewports).forEach(({ device, viewportWidth, viewportHeight, isMobile }) => { - describe(`LayoutNavbar: ${device}`, { viewportHeight, viewportWidth }, () => { - before(() => { - cy.clearLocalStorage(); - }); - - beforeEach(() => { - mockCoinPricesServer(); - localStorage.setItem(IS_ONBOARDING_ALWAYS_VISIBLE, 'false'); - localStorage.setItem(IS_ONBOARDING_DONE, 'true'); - localStorage.setItem(HAS_ONBOARDING_BEEN_CLOSED, 'true'); - visitWithLoader(ROOT.absolute, ROOT_ROUTES.home.absolute); - }); - - if (device === 'large-desktop' || device === 'desktop') { - it('LayoutNavbar doesn`t exist', () => { - cy.get('[data-test=LayoutNavbar]').should('not.exist'); - }); - } else { - it('LayoutNavbar is visible', () => { - cy.get('[data-test=LayoutNavbar]').should('be.visible'); - }); - - it('LayoutNavbar has correct size na style', () => { - cy.get('[data-test=LayoutNavbar]') - .invoke('css', 'height') - .should('eq', isMobile ? '72px' : '104px'); - cy.get('[data-test=LayoutNavbar]') - .invoke('css', 'width') - .should('eq', isMobile ? '342px' : '432px'); - cy.get('[data-test=LayoutNavbar]') - .invoke('css', 'borderRadius') - .should('eq', isMobile ? '32px' : '40px'); - cy.get('[data-test=LayoutNavbar]') - .invoke('css', 'boxShadow') - .should('eq', 'rgba(0, 0, 0, 0.05) 0px 0px 25px 0px'); - }); - - it('Every button is visible in correct order, has right style and props', () => { - const navbarButtons = [ - { - href: '/home', - key: 'home', - text: 'Home', - }, - { - href: '/projects', - key: 'projects', - text: 'Projects', - }, - { - href: '/allocation', - key: 'allocate', - text: 'Allocate', - }, - { - href: '/metrics', - key: 'metrics', - text: 'Metrics', - }, - { - href: '/settings', - key: 'settings', - text: 'Settings', - }, - ]; - - cy.get(`[data-test=LayoutNavbar__buttons]`).children().should('have.length', 5); - cy.get(`[data-test=LayoutNavbar__buttons]`) - .children() - .each((el1, idx1) => { - cy.get(`[data-test=LayoutNavbar__buttons]`).children().eq(idx1).should('be.visible'); - cy.get(`[data-test=LayoutNavbar__buttons]`) - .children() - .eq(idx1) - .invoke('text') - .should('eq', navbarButtons[idx1].text); - cy.get(`[data-test=LayoutNavbar__buttons]`) - .children() - .eq(idx1) - .invoke('attr', 'href') - .should('eq', navbarButtons[idx1].href); - cy.get(`[data-test=LayoutNavbar__buttons]`) - .children() - .eq(idx1) - .invoke('css', 'height') - .should('eq', '72px'); - cy.get(`[data-test=LayoutNavbar__buttons]`) - .children() - .eq(idx1) - .invoke('css', 'width') - .should('eq', '64px'); - - if (idx1 === 0) { - cy.get(`[data-test=LayoutNavbar__Button__Svg--${navbarButtons[idx1].key}]`).within( - () => { - cy.get('path') - .eq(1) - .then($el => $el.css('fill')) - .should('be.colored', '#171717'); - }, - ); - } else { - cy.get(`[data-test=LayoutNavbar__Button__Svg--${navbarButtons[idx1].key}]`).within( - () => { - cy.get('path').each((el2, idx2) => { - cy.get('path') - .eq(idx2) - .then($el => $el.css('stroke')) - .should('be.colored', '#cdd1cd'); - }); - }, - ); - } - }); - }); - - it('Home button redirects to HomeView', () => { - cy.get('[data-test=LayoutNavbar__Button--home]').click(); - cy.get('[data-test=HomeView]').should('be.visible'); - }); - - it('Projects button redirects to ProjectsView', () => { - cy.get('[data-test=LayoutNavbar__Button--projects]').click(); - cy.get('[data-test=ProjectsView]').should('be.visible'); - }); - - it('Allocate button redirects to AllocationView', () => { - cy.get('[data-test=LayoutNavbar__Button--allocate]').click(); - cy.get('[data-test=AllocationView]').should('be.visible'); - }); - - it('Metrics button redirects to MetricsView', () => { - cy.get('[data-test=LayoutNavbar__Button--metrics]').click(); - cy.get('[data-test=MetricsView]').should('be.visible'); - }); - - it('Settings button redirects to SettingsView', () => { - cy.get('[data-test=LayoutNavbar__Button--settings]').click(); - cy.get('[data-test=SettingsView]').should('be.visible'); - }); - } - }); -}); From 44298a1bb1eb3cb9a60d2101843e365163b60bdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Miko=C5=82ajczyk?= Date: Tue, 19 Nov 2024 21:51:19 +0100 Subject: [PATCH 3/7] oct-2142: onboarding e2e tos accepted --- .../cypress/e2e/_7onboardingTOSAccepted.cy.ts | 224 ++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 client/cypress/e2e/_7onboardingTOSAccepted.cy.ts diff --git a/client/cypress/e2e/_7onboardingTOSAccepted.cy.ts b/client/cypress/e2e/_7onboardingTOSAccepted.cy.ts new file mode 100644 index 0000000000..95089c0d68 --- /dev/null +++ b/client/cypress/e2e/_7onboardingTOSAccepted.cy.ts @@ -0,0 +1,224 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import chaiColors from 'chai-colors'; + +import { moveTime, setupAndMoveToPlayground } from 'cypress/utils/moveTime'; +import { + beforeSetup, + checkChangeStepsByClickingEdgeOfTheScreenMoreThan25px, + checkChangeStepsByClickingEdgeOfTheScreenUpTo25px, + checkChangeStepsBySwipingOnScreenDifferenceLessThanl5px, + checkChangeStepsBySwipingOnScreenDifferenceMoreThanOrEqual5px, + checkChangeStepsWithArrowKeys, + checkProgressStepperSlimIsCurrentAndClickNext, + connectWalletOnboarding, +} from 'cypress/utils/onboarding'; +import viewports from 'cypress/utils/viewports'; +import { QUERY_KEYS } from 'src/api/queryKeys'; +import { HAS_ONBOARDING_BEEN_CLOSED, IS_ONBOARDING_DONE } from 'src/constants/localStorageKeys'; +import { + getStepsDecisionWindowClosed, + getStepsDecisionWindowOpen, +} from 'src/hooks/helpers/useOnboardingSteps/steps'; + +chai.use(chaiColors); + +describe('move time', () => { + before(() => { + /** + * Global Metamask setup done by Synpress is not always done. + * Since Synpress needs to have valid provider to fetch the data from contracts, + * setupMetamask is required in each test suite. + */ + cy.setupMetamask(); + }); + + it('allocation window is open, when it is not, move time', () => { + setupAndMoveToPlayground(); + + cy.window().then(async win => { + moveTime(win, 'nextEpochDecisionWindowOpen').then(() => { + const isDecisionWindowOpenAfter = win.clientReactQuery.getQueryData( + QUERY_KEYS.isDecisionWindowOpen, + ); + expect(isDecisionWindowOpenAfter).to.be.true; + }); + }); + }); +}); + +Object.values(viewports).forEach( + ({ device, viewportWidth, viewportHeight, isDesktop, isLargeDesktop }) => { + describe(`onboarding (TOS accepted): ${device}`, { viewportHeight, viewportWidth }, () => { + before(() => { + beforeSetup(); + }); + + beforeEach(() => { + cy.clearLocalStorage(); + connectWalletOnboarding(); + }); + + after(() => { + cy.disconnectMetamaskWalletFromAllDapps(); + }); + + it('user is able to click through entire onboarding flow', () => { + cy.window().then(win => { + const isDecisionWindowOpen = win.clientReactQuery.getQueryData( + QUERY_KEYS.isDecisionWindowOpen, + ); + + const onboardingSteps = isDecisionWindowOpen + ? getStepsDecisionWindowOpen('2', '16 Jan') + : getStepsDecisionWindowClosed('2', '16 Jan'); + + for (let i = 1; i < onboardingSteps.length - 1; i++) { + checkProgressStepperSlimIsCurrentAndClickNext(i); + } + + cy.get('[data-test=ModalOnboarding__ProgressStepperSlim__element]') + .eq(onboardingSteps.length - 1) + .click(); + cy.get('[data-test=ModalOnboarding__Button]').click(); + cy.get('[data-test=ModalOnboarding]').should('not.exist'); + cy.get('[data-test=ProjectsView__ProjectsList]').should('be.visible'); + }); + }); + + it('user is able to close the modal by clicking button in the top-right', () => { + cy.get('[data-test=ModalOnboarding]').should('be.visible'); + cy.get('[data-test=ModalOnboarding__Button]').click(); + cy.get('[data-test=ModalOnboarding]').should('not.exist'); + cy.get('[data-test=ProjectsView__ProjectsList]').should('be.visible'); + }); + + it('renders every time page is refreshed when "Always show Allocate onboarding" option is checked', () => { + cy.get('[data-test=ModalOnboarding__Button]').click(); + if (isLargeDesktop || isDesktop) { + cy.get('[data-test=LayoutTopBar__settingsButton]').click(); + } else { + cy.get(`[data-test=LayoutNavbar__Button--settings]`).click(); + } + cy.get('[data-test=SettingsShowOnboardingBox__InputToggle]').check().should('be.checked'); + cy.reload(); + // For the unknown reason reloads sometimes cause app to disconnect in E2E env. + cy.disconnectMetamaskWalletFromAllDapps(); + connectWalletOnboarding(); + cy.get('[data-test=ModalOnboarding]').should('be.visible'); + }); + + it('renders only once when "Always show Allocate onboarding" option is not checked', () => { + cy.get('[data-test=ModalOnboarding__Button]').click(); + if (isLargeDesktop || isDesktop) { + cy.get('[data-test=LayoutTopBar__settingsButton]').click(); + } else { + cy.get(`[data-test=LayoutNavbar__Button--settings]`).click(); + } + cy.get('[data-test=SettingsShowOnboardingBox__InputToggle]').should('not.be.checked'); + cy.reload(); + cy.get('[data-test=ModalOnboarding]').should('not.exist'); + }); + + it('user can change steps with arrow keys (left, right)', () => { + checkChangeStepsWithArrowKeys(true); + }); + + it('user can change steps by clicking the edge of the screen (up to 25px from each edge)', () => { + checkChangeStepsByClickingEdgeOfTheScreenUpTo25px(true); + }); + + it('user cannot change steps by clicking the edge of the screen (more than 25px from each edge)', () => { + checkChangeStepsByClickingEdgeOfTheScreenMoreThan25px(true); + }); + + it('user can change steps by swiping on screen (difference more than or equal 5px)', () => { + checkChangeStepsBySwipingOnScreenDifferenceMoreThanOrEqual5px(true); + }); + + it('user cannot change steps by swiping on screen (difference less than 5px)', () => { + checkChangeStepsBySwipingOnScreenDifferenceLessThanl5px(true); + }); + + it('user cannot change steps by swiping on screen (difference less than 5px)', () => { + checkChangeStepsBySwipingOnScreenDifferenceLessThanl5px(true); + }); + + it('user is able to close the onboarding, and after page reload, onboarding does not show up again', () => { + cy.get('[data-test=ModalOnboarding]').should('be.visible'); + cy.get('[data-test=ModalOnboarding__Button]').click(); + cy.get('[data-test=ModalOnboarding]').should('not.exist'); + cy.reload(); + cy.get('[data-test=ModalOnboarding]').should('not.exist'); + }); + + it('Onboarding stepper is visible after closing onboarding modal without going to the last step', () => { + cy.get('[data-test=ModalOnboarding__Button]').click(); + cy.get('[data-test=OnboardingStepper]').should('be.visible'); + }); + + it('Onboarding stepper opens onboarding modal', () => { + cy.get('[data-test=ModalOnboarding__Button]').click(); + cy.get('[data-test=ModalOnboarding]').should('not.exist'); + cy.get('[data-test=OnboardingStepper]').click(); + cy.get('[data-test=ModalOnboarding]').should('be.visible'); + }); + + it(`Onboarding stepper is not visible if "${IS_ONBOARDING_DONE}" is set to "true"`, () => { + localStorage.setItem(IS_ONBOARDING_DONE, 'true'); + localStorage.setItem(HAS_ONBOARDING_BEEN_CLOSED, 'true'); + cy.reload(); + cy.get('[data-test=ModalOnboarding]').should('not.exist'); + cy.get('[data-test=OnboardingStepper]').should('not.exist'); + }); + + if (isDesktop) { + it(`Onboarding stepper has tooltip`, () => { + cy.get('[data-test=ModalOnboarding__Button]').click(); + cy.get('[data-test=OnboardingStepper]').trigger('mouseover'); + cy.get('[data-test=OnboardingStepper__Tooltip__content]').should('be.visible'); + cy.get('[data-test=OnboardingStepper__Tooltip__content]') + .invoke('text') + .should('eq', 'Reopen onboarding'); + }); + } + + it('Onboarding stepper has right amount of steps and highlights correct amount of passed steps', () => { + const onboardingSteps = getStepsDecisionWindowOpen('2', '16 Jan'); + + cy.get('[data-test=ModalOnboarding__Button]').click(); + + cy.get(`[data-test*=OnboardingStepper__circle]`).should( + 'have.length', + onboardingSteps.length, + ); + + for (let i = 0; i < onboardingSteps.length - 1; i++) { + cy.get(`[data-test=OnboardingStepper__circle--${i}]`) + .then($el => $el.css('stroke')) + .should('be.colored', i > 0 ? '#ffffff' : '#2d9b87'); + } + cy.get('[data-test=OnboardingStepper]').click(); + checkProgressStepperSlimIsCurrentAndClickNext(1); + cy.get('[data-test=ModalOnboarding__Button]').click(); + for (let i = 0; i < onboardingSteps.length - 1; i++) { + cy.get(`[data-test=OnboardingStepper__circle--${i}]`) + .then($el => $el.css('stroke')) + .should('be.colored', i > 1 ? '#ffffff' : '#2d9b87'); + } + cy.get('[data-test=OnboardingStepper]').click(); + checkProgressStepperSlimIsCurrentAndClickNext(2); + cy.get('[data-test=ModalOnboarding__Button]').click(); + for (let i = 0; i < onboardingSteps.length - 1; i++) { + cy.get(`[data-test=OnboardingStepper__circle--${i}]`) + .then($el => $el.css('stroke')) + .should('be.colored', i > 2 ? '#ffffff' : '#2d9b87'); + } + cy.get('[data-test=OnboardingStepper]').click(); + checkProgressStepperSlimIsCurrentAndClickNext(3); + cy.get('[data-test=ModalOnboarding__Button]').click(); + + cy.get('[data-test=OnboardingStepper]').should('not.exist'); + }); + }); + }, +); From dd8baf44b3905ad6168c88a45060fcdfb0bbd439 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Miko=C5=82ajczyk?= Date: Wed, 20 Nov 2024 13:58:06 +0100 Subject: [PATCH 4/7] oct-2141: cypress crash fix --- client/synpress.config.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/synpress.config.ts b/client/synpress.config.ts index 94248add2b..eea9904eb0 100644 --- a/client/synpress.config.ts +++ b/client/synpress.config.ts @@ -29,7 +29,8 @@ export default defineConfig({ }, supportFile: 'cypress/support/index.ts', }, - numTestsKeptInMemory: 4, + numTestsKeptInMemory: 2, + experimentalMemoryManagement: true, video: true, viewportHeight: 1080, viewportWidth: 1920, From e0cbd218d8852a70b3b43acdea91ad0463e9bc47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Miko=C5=82ajczyk?= Date: Wed, 20 Nov 2024 13:59:40 +0100 Subject: [PATCH 5/7] oct-2142: HomeView fix --- client/cypress/e2e/_7onboardingTOSAccepted.cy.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/cypress/e2e/_7onboardingTOSAccepted.cy.ts b/client/cypress/e2e/_7onboardingTOSAccepted.cy.ts index 95089c0d68..9a3ea61b97 100644 --- a/client/cypress/e2e/_7onboardingTOSAccepted.cy.ts +++ b/client/cypress/e2e/_7onboardingTOSAccepted.cy.ts @@ -81,7 +81,7 @@ Object.values(viewports).forEach( .click(); cy.get('[data-test=ModalOnboarding__Button]').click(); cy.get('[data-test=ModalOnboarding]').should('not.exist'); - cy.get('[data-test=ProjectsView__ProjectsList]').should('be.visible'); + cy.get('[data-test=HomeView]').should('be.visible'); }); }); @@ -89,7 +89,7 @@ Object.values(viewports).forEach( cy.get('[data-test=ModalOnboarding]').should('be.visible'); cy.get('[data-test=ModalOnboarding__Button]').click(); cy.get('[data-test=ModalOnboarding]').should('not.exist'); - cy.get('[data-test=ProjectsView__ProjectsList]').should('be.visible'); + cy.get('[data-test=HomeView]').should('be.visible'); }); it('renders every time page is refreshed when "Always show Allocate onboarding" option is checked', () => { From acd6b375e753530270a0039f1adc9eb105d0f3a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Miko=C5=82ajczyk?= Date: Wed, 20 Nov 2024 17:04:17 +0100 Subject: [PATCH 6/7] oct-2142: OnboardingStepper Tooltip test fix --- .../shared/OnboardingStepper/OnboardingStepper.module.scss | 6 +----- .../shared/OnboardingStepper/OnboardingStepper.tsx | 3 +-- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/client/src/components/shared/OnboardingStepper/OnboardingStepper.module.scss b/client/src/components/shared/OnboardingStepper/OnboardingStepper.module.scss index 42ef8fd856..b5dc218e67 100644 --- a/client/src/components/shared/OnboardingStepper/OnboardingStepper.module.scss +++ b/client/src/components/shared/OnboardingStepper/OnboardingStepper.module.scss @@ -68,9 +68,5 @@ $circleDiameter: 5.6rem; } .tooltipWrapper { - position: absolute; - width: $circleDiameter; - height: $circleDiameter; - bottom: 4.8rem !important; - right: 4.8rem !important; + pointer-events: initial; } diff --git a/client/src/components/shared/OnboardingStepper/OnboardingStepper.tsx b/client/src/components/shared/OnboardingStepper/OnboardingStepper.tsx index 352b667e52..995cdbbd2b 100644 --- a/client/src/components/shared/OnboardingStepper/OnboardingStepper.tsx +++ b/client/src/components/shared/OnboardingStepper/OnboardingStepper.tsx @@ -65,11 +65,10 @@ const OnboardingStepper = (): ReactElement => { {...animationProps} >
From 9a20bfda8157c72dedbc48a6735e1711ca61c852 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Miko=C5=82ajczyk?= Date: Wed, 20 Nov 2024 22:38:27 +0100 Subject: [PATCH 7/7] oct-2142: linter fix --- client/synpress.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/synpress.config.ts b/client/synpress.config.ts index eea9904eb0..5b192b6167 100644 --- a/client/synpress.config.ts +++ b/client/synpress.config.ts @@ -29,8 +29,8 @@ export default defineConfig({ }, supportFile: 'cypress/support/index.ts', }, - numTestsKeptInMemory: 2, experimentalMemoryManagement: true, + numTestsKeptInMemory: 2, video: true, viewportHeight: 1080, viewportWidth: 1920,