This is an automated email from the ASF dual-hosted git repository.
riemer 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 c86502114 New E2E test added for export/import pipelines (#2131)
c86502114 is described below
commit c86502114380ac860140ec9de2f28a791eb73080
Author: Marcelfrueh <[email protected]>
AuthorDate: Mon Nov 6 07:31:26 2023 +0100
New E2E test added for export/import pipelines (#2131)
* test(#2017): Add cypress test for configuration
* Add license header
* New Test
---
ui/cypress/support/utils/PipelineUtils.ts | 4 ++
.../adapter/editAdapterSettingsAndPipeline.spec.ts | 2 +-
ui/cypress/tests/pipeline/pipelineExport.spec.ts | 79 ++++++++++++++++++++++
.../pipeline-overview.component.html | 1 +
.../import-pipeline-dialog.component.html | 1 +
ui/src/app/pipelines/pipelines.component.html | 2 +
6 files changed, 88 insertions(+), 1 deletion(-)
diff --git a/ui/cypress/support/utils/PipelineUtils.ts
b/ui/cypress/support/utils/PipelineUtils.ts
index 72623a690..42cfcc45e 100644
--- a/ui/cypress/support/utils/PipelineUtils.ts
+++ b/ui/cypress/support/utils/PipelineUtils.ts
@@ -31,6 +31,10 @@ export class PipelineUtils {
PipelineUtils.startPipeline(pipelineInput);
}
+ public static goToPipelines() {
+ cy.visit('#/pipelines');
+ }
+
private static goToPipelineEditor() {
// Go to StreamPipes editor
cy.visit('#/pipelines');
diff --git a/ui/cypress/tests/adapter/editAdapterSettingsAndPipeline.spec.ts
b/ui/cypress/tests/adapter/editAdapterSettingsAndPipeline.spec.ts
index ca0eb4f88..5154d21e9 100644
--- a/ui/cypress/tests/adapter/editAdapterSettingsAndPipeline.spec.ts
+++ b/ui/cypress/tests/adapter/editAdapterSettingsAndPipeline.spec.ts
@@ -74,7 +74,7 @@ describe('Test Edit Adapter and Pipeline', () => {
ConnectUtils.closeAdapterPreview();
// Go to pipelines, check for warning icon and edit pipeline
- cy.visit('#/pipelines').wait(1000);
+ PipelineUtils.goToPipelines();
cy.dataCy('pipeline-warning-icon', {
timeout: 60000,
diff --git a/ui/cypress/tests/pipeline/pipelineExport.spec.ts
b/ui/cypress/tests/pipeline/pipelineExport.spec.ts
new file mode 100644
index 000000000..d125d5630
--- /dev/null
+++ b/ui/cypress/tests/pipeline/pipelineExport.spec.ts
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+import { ConnectUtils } from '../../support/utils/connect/ConnectUtils';
+import { PipelineUtils } from '../../support/utils/PipelineUtils';
+import { PipelineElementBuilder } from
'../../support/builder/PipelineElementBuilder';
+import { PipelineBuilder } from '../../support/builder/PipelineBuilder';
+
+const adapterName = 'simulator';
+
+describe('Test Export and Import Functionality of Pipelines', () => {
+ beforeEach('Setup Test', () => {
+ cy.initStreamPipesTest();
+ ConnectUtils.addMachineDataSimulator(adapterName);
+ const pipelineInput = PipelineBuilder.create('Pipeline Test')
+ .addSource(adapterName)
+ .addProcessingElement(
+ PipelineElementBuilder.create('field_renamer')
+ .addInput('drop-down', 'convert-property', 'timestamp')
+ .addInput('input', 'field-name', 't')
+ .build(),
+ )
+ .addSink(
+ PipelineElementBuilder.create('data_lake')
+ .addInput('input', 'db_measurement', 'demo')
+ .build(),
+ )
+ .build();
+
+ PipelineUtils.addPipeline(pipelineInput);
+ });
+
+ it('Perform Test', () => {
+ PipelineUtils.goToPipelines();
+
+ // Check if pipeline exists
+ cy.dataCy('all-pipelines-table').should('have.length', 1);
+
+ // Export Pipeline
+ cy.dataCy('export-pipelines-btn').click();
+
+ // Delete created pipeline
+ PipelineUtils.deletePipeline();
+ cy.dataCy('all-pipelines-table').should('have.length', 0);
+
+ // Import pipeline
+ cy.dataCy('import-pipelines-btn').click();
+ cy.get('input[type="file"]').selectFile(
+ 'cypress/downloads/pipelines.json',
+ { force: true },
+ );
+ // Select pipeline checkbox
+ cy.get('[type="checkbox"]').check();
+ cy.dataCy('import-selected-pipelines-btn').click();
+
+ // Check if pipeline import was succesful
+ cy.dataCy('all-pipelines-table').should('have.length', 1);
+
+ // Start pipeline and check if pipeline has started correctly
+ cy.dataCy('start-pipeline-button').click();
+ cy.get('[class="success-message"]').should('be.visible');
+ cy.dataCy('sp-pipeline-dialog-close').click();
+ });
+});
diff --git
a/ui/src/app/pipelines/components/pipeline-overview/pipeline-overview.component.html
b/ui/src/app/pipelines/components/pipeline-overview/pipeline-overview.component.html
index 6e3805e1b..ea01ffa89 100644
---
a/ui/src/app/pipelines/components/pipeline-overview/pipeline-overview.component.html
+++
b/ui/src/app/pipelines/components/pipeline-overview/pipeline-overview.component.html
@@ -28,6 +28,7 @@
[dataSource]="dataSource"
style="width: 100%"
matSort
+ data-cy="all-pipelines-table"
>
<ng-container matColumnDef="status">
<th mat-header-cell mat-sort-header *matHeaderCellDef>Status</th>
diff --git
a/ui/src/app/pipelines/dialog/import-pipeline/import-pipeline-dialog.component.html
b/ui/src/app/pipelines/dialog/import-pipeline/import-pipeline-dialog.component.html
index 6b33ca0b4..eea801e8f 100644
---
a/ui/src/app/pipelines/dialog/import-pipeline/import-pipeline-dialog.component.html
+++
b/ui/src/app/pipelines/dialog/import-pipeline/import-pipeline-dialog.component.html
@@ -99,6 +99,7 @@
color="accent"
(click)="startImport()"
*ngIf="page === 'select-pipelines'"
+ data-cy="import-selected-pipelines-btn"
>
Import
</button>
diff --git a/ui/src/app/pipelines/pipelines.component.html
b/ui/src/app/pipelines/pipelines.component.html
index 7c224bf8e..9f1851d6f 100644
--- a/ui/src/app/pipelines/pipelines.component.html
+++ b/ui/src/app/pipelines/pipelines.component.html
@@ -69,6 +69,7 @@
matTooltip="Export pipelines"
matTooltipPosition="above"
(click)="exportPipelines()"
+ data-cy="export-pipelines-btn"
>
<i class="material-icons"> cloud_download </i>
</button>
@@ -78,6 +79,7 @@
matTooltip="Import pipelines"
matTooltipPosition="above"
(click)="openImportPipelinesDialog()"
+ data-cy="import-pipelines-btn"
>
<i class="material-icons"> cloud_upload </i>
</button>