Skip to content

Commit

Permalink
New E2E test added for export/import pipelines (#2131)
Browse files Browse the repository at this point in the history
* test(#2017): Add cypress test for configuration

* Add license header

* New Test
  • Loading branch information
Marcelfrueh committed Nov 6, 2023
1 parent 4b4fb8e commit c865021
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 1 deletion.
4 changes: 4 additions & 0 deletions ui/cypress/support/utils/PipelineUtils.ts
Expand Up @@ -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');
Expand Down
Expand Up @@ -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,
Expand Down
79 changes: 79 additions & 0 deletions 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();
});
});
Expand Up @@ -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>
Expand Down
Expand Up @@ -99,6 +99,7 @@ <h4>{{ pages[1].description }}</h4>
color="accent"
(click)="startImport()"
*ngIf="page === 'select-pipelines'"
data-cy="import-selected-pipelines-btn"
>
Import
</button>
Expand Down
2 changes: 2 additions & 0 deletions ui/src/app/pipelines/pipelines.component.html
Expand Up @@ -69,6 +69,7 @@
matTooltip="Export pipelines"
matTooltipPosition="above"
(click)="exportPipelines()"
data-cy="export-pipelines-btn"
>
<i class="material-icons"> cloud_download </i>
</button>
Expand All @@ -78,6 +79,7 @@
matTooltip="Import pipelines"
matTooltipPosition="above"
(click)="openImportPipelinesDialog()"
data-cy="import-pipelines-btn"
>
<i class="material-icons"> cloud_upload </i>
</button>
Expand Down

0 comments on commit c865021

Please sign in to comment.