From d0dbe21f4c81b75e1111501a37aefe78fe9d281c Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Tue, 14 Jan 2025 15:35:34 +0100 Subject: [PATCH] test(dashboard): Add regression test for loading unneeded data Prevent a regression of https://github.com/nextcloud/server/issues/48403 Signed-off-by: Ferdinand Thiessen --- .../e2e/dashboard/widget-performance.cy.ts | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 cypress/e2e/dashboard/widget-performance.cy.ts diff --git a/cypress/e2e/dashboard/widget-performance.cy.ts b/cypress/e2e/dashboard/widget-performance.cy.ts new file mode 100644 index 0000000000000..e5793fa40e1c4 --- /dev/null +++ b/cypress/e2e/dashboard/widget-performance.cy.ts @@ -0,0 +1,37 @@ +/*! + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +/** + * Regression test of https://github.com/nextcloud/server/issues/48403 + * Ensure that only visible widget data is loaded + */ +describe('dashboard: performance', () => { + before(() => { + cy.createRandomUser().then((user) => { + cy.login(user) + }) + }) + + it('Only load needed widgets', () => { + cy.intercept('**/dashboard/api/v2/widget-items?widgets%5B%5D=user_status').as('loadedWidgets') + + const now = new Date(2025, 0, 14, 15) + cy.clock(now) + + // The dashboard is loaded + cy.visit('/apps/dashboard') + cy.get('#app-dashboard') + .should('be.visible') + .contains('Good afternoon') + .should('be.visible') + + // Wait and check no requests are made + // eslint-disable-next-line cypress/no-unnecessary-waiting + cy.wait(4000, { timeout: 8000 }) + cy.get('@loadedWidgets.all').then((interceptions) => { + expect(interceptions).to.have.length(0) + }) + }) +})