This is an automated email from the ASF dual-hosted git repository.
dominikriemer pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/streampipes.git
The following commit(s) were added to refs/heads/dev by this push:
new 643782e2f3 fix: Flaky cypress asset filter and dataset test (#4607)
643782e2f3 is described below
commit 643782e2f3783a402956b0ef7ffed6cb0c939546
Author: Dominik Riemer <[email protected]>
AuthorDate: Tue Jun 23 07:36:23 2026 +0200
fix: Flaky cypress asset filter and dataset test (#4607)
---
ui/cypress/support/utils/asset/AssetUtils.ts | 55 ++++++++++++++++++++++
ui/cypress/support/utils/chart/ChartUtils.ts | 14 +++++-
.../tests/assetManagement/assetFilterTest.spec.ts | 1 +
ui/cypress/tests/chart/timeOrderDataView.spec.ts | 2 +-
4 files changed, 70 insertions(+), 2 deletions(-)
diff --git a/ui/cypress/support/utils/asset/AssetUtils.ts
b/ui/cypress/support/utils/asset/AssetUtils.ts
index 6f794c741f..2b6918a6ff 100644
--- a/ui/cypress/support/utils/asset/AssetUtils.ts
+++ b/ui/cypress/support/utils/asset/AssetUtils.ts
@@ -25,6 +25,61 @@ import { AssetBuilder } from '../../builder/AssetBuilder';
import { PermissionUtils } from '../user/PermissionUtils';
export class AssetUtils {
+ public static waitForAssets(
+ assetNames: string[],
+ attemptsRemaining: number = 40,
+ ): Cypress.Chainable<void> {
+ return cy.then(() => {
+ const token = window.localStorage.getItem('auth-token');
+
+ if (!token) {
+ throw new Error(
+ 'Waiting for assets requires an auth token. Call
cy.login() first.',
+ );
+ }
+
+ return cy
+ .request<{ assetName: string }[]>({
+ method: 'GET',
+ url: '/streampipes-backend/api/v2/assets',
+ headers: {
+ Authorization: `Bearer ${token}`,
+ },
+ })
+ .then(response => {
+ const availableAssetNames = response.body.map(
+ asset => asset.assetName,
+ );
+ const allAssetsAvailable = assetNames.every(assetName =>
+ availableAssetNames.includes(assetName),
+ );
+
+ if (allAssetsAvailable) {
+ return;
+ }
+
+ if (attemptsRemaining === 0) {
+ const missingAssetNames = assetNames.filter(
+ assetName =>
+ !availableAssetNames.includes(assetName),
+ );
+ throw new Error(
+ `Assets did not become available:
${missingAssetNames.join(', ')}`,
+ );
+ }
+
+ return cy
+ .wait(250, { log: false })
+ .then(() =>
+ this.waitForAssets(
+ assetNames,
+ attemptsRemaining - 1,
+ ),
+ );
+ });
+ });
+ }
+
public static goToAssets() {
cy.visit('#/assets/overview');
cy.dataCy('asset-title').should('be.visible');
diff --git a/ui/cypress/support/utils/chart/ChartUtils.ts
b/ui/cypress/support/utils/chart/ChartUtils.ts
index e3cf9567b7..3b889949e0 100644
--- a/ui/cypress/support/utils/chart/ChartUtils.ts
+++ b/ui/cypress/support/utils/chart/ChartUtils.ts
@@ -29,8 +29,20 @@ import { ConnectBtns } from '../connect/ConnectBtns';
export class ChartUtils {
public static ADAPTER_NAME = 'datalake_configuration';
- public static goToDatalake() {
+ public static goToDatalake(discardUnsavedChanges: boolean = true) {
cy.visit('#/chart');
+ if (!discardUnsavedChanges) {
+ return;
+ }
+ cy.location('hash', { timeout: 10000 }).then(hash => {
+ if (hash.startsWith('#/chart/')) {
+ SharedBtns.confirmDialogCancelBtn()
+ .should('be.visible')
+ .click();
+ }
+ });
+ cy.location('hash', { timeout: 10000 }).should('eq', '#/chart');
+ cy.get('sp-chart-overview', { timeout: 10000 }).should('be.visible');
}
public static goToDashboard() {
diff --git a/ui/cypress/tests/assetManagement/assetFilterTest.spec.ts
b/ui/cypress/tests/assetManagement/assetFilterTest.spec.ts
index 0a2870c5fc..2d37fb608b 100644
--- a/ui/cypress/tests/assetManagement/assetFilterTest.spec.ts
+++ b/ui/cypress/tests/assetManagement/assetFilterTest.spec.ts
@@ -44,6 +44,7 @@ describe('Test asset filters', () => {
beforeEach('Setup Test', () => {
cy.initStreamPipesTest();
cy.importAssetResources();
+ AssetUtils.waitForAssets(['asset-1_0', 'asset-2_0', 'asset-3_0']);
// This is currently required because the assets are only loaded on
page load
cy.reload();
});
diff --git a/ui/cypress/tests/chart/timeOrderDataView.spec.ts
b/ui/cypress/tests/chart/timeOrderDataView.spec.ts
index fb6bd2734b..1881d51c4e 100644
--- a/ui/cypress/tests/chart/timeOrderDataView.spec.ts
+++ b/ui/cypress/tests/chart/timeOrderDataView.spec.ts
@@ -74,7 +74,7 @@ describe('Test Time Order in Charts', () => {
});
// Check if dialog window is showing after applying changes to time
settings
- ChartUtils.goToDatalake();
+ ChartUtils.goToDatalake(false);
ChartUtils.checkIfConfirmationDialogIsShowing();
});
});