From ef54e937d0c7ef739f9be87506f02cc0343061c4 Mon Sep 17 00:00:00 2001 From: sanketpathak Date: Fri, 7 Jun 2024 21:21:18 +0530 Subject: [PATCH 1/2] Adding pipelines e2e tests from console to console plugin e2e tests fix --- __mocks__/serverFlags.js | 11 +++++++---- .../cypress/support/pages/topology-page.ts | 1 - yarn.lock | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/__mocks__/serverFlags.js b/__mocks__/serverFlags.js index c563c21d..a00e9e7c 100644 --- a/__mocks__/serverFlags.js +++ b/__mocks__/serverFlags.js @@ -1,4 +1,7 @@ -window.SERVER_FLAGS = { - basePath: '/', - consolePlugins: [], -}; +export declare interface window { + SERVER_FLAGS: { + basePath: '/', + consolePlugins: [], + }; + windowError?: string; +} diff --git a/integration-tests/cypress/support/pages/topology-page.ts b/integration-tests/cypress/support/pages/topology-page.ts index 70c56239..7d1fe427 100644 --- a/integration-tests/cypress/support/pages/topology-page.ts +++ b/integration-tests/cypress/support/pages/topology-page.ts @@ -129,7 +129,6 @@ export const topologyPage = { // cy.get(topologyPO.addStorage.save).click(); // }, // }, - deleteApplication: (appName: string) => { /* eslint-disable-next-line cypress/unsafe-to-chain-command */ cy.get(topologyPO.graph.deleteApplication).clear().type(appName); diff --git a/yarn.lock b/yarn.lock index ec328874..357bd6b9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4189,6 +4189,16 @@ browserslist@^4.14.5, browserslist@^4.23.0, browserslist@^4.23.1: node-releases "^2.0.14" update-browserslist-db "^1.1.0" +browserslist@^4.23.0: + version "4.23.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed" + integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== + dependencies: + caniuse-lite "^1.0.30001640" + electron-to-chromium "^1.4.820" + node-releases "^2.0.14" + update-browserslist-db "^1.1.0" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -14434,6 +14444,14 @@ update-browserslist-db@^1.1.0: escalade "^3.1.2" picocolors "^1.0.1" +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + update-notifier@^2.2.0: version "2.5.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" From 99458c77027677a83d05c8fd75cae5e93f0f11db Mon Sep 17 00:00:00 2001 From: sanketpathak Date: Tue, 6 Aug 2024 14:49:09 +0530 Subject: [PATCH 2/2] Add e2e test for the new timeout option in Start Pipeline modal --- __mocks__/serverFlags.js | 11 +- .../features/pipelines/pipelines-runs.feature | 26 +++-- .../support/page-objects/pipelines-po.ts | 4 +- .../cypress/support/pages/app.ts | 1 - .../cypress/support/pages/functions/common.ts | 62 +++++++++- .../functions/installOperatorOnCluster.ts | 2 +- .../cypress/support/pages/git-page.ts | 4 + .../pipelines/pipelineRun-details-page.ts | 25 ++++- .../support/pages/pipelines/pipelines-page.ts | 106 +++++++++++++++++- .../step-definitions/common/pipelines.ts | 29 ++++- .../pipelines/create-from-add-options.ts | 15 --- .../pipelines/pipelines-runs.ts | 87 ++++++++------ 12 files changed, 286 insertions(+), 86 deletions(-) diff --git a/__mocks__/serverFlags.js b/__mocks__/serverFlags.js index a00e9e7c..c563c21d 100644 --- a/__mocks__/serverFlags.js +++ b/__mocks__/serverFlags.js @@ -1,7 +1,4 @@ -export declare interface window { - SERVER_FLAGS: { - basePath: '/', - consolePlugins: [], - }; - windowError?: string; -} +window.SERVER_FLAGS = { + basePath: '/', + consolePlugins: [], +}; diff --git a/integration-tests/cypress/features/pipelines/pipelines-runs.feature b/integration-tests/cypress/features/pipelines/pipelines-runs.feature index 01c6eff1..a783abe0 100644 --- a/integration-tests/cypress/features/pipelines/pipelines-runs.feature +++ b/integration-tests/cypress/features/pipelines/pipelines-runs.feature @@ -20,12 +20,23 @@ Feature: Pipeline Runs | pipeline-git-resource | openshift-client | + # To run the folowing test, Red Hat OpenShift Pipelines operator subscription to be updated to refer to main branch of console plugin until this feature is released in operator versioned 1.16. + # To change the subscription to main, follow the below steps + # Go to Installed operators and select Red Hat OpenShift Pipelines operator + # Click on Edit subscription in Actions dropdown + # Add below lines under spec and Save + # config: + # env: + # - name: IMAGE_PIPELINES_CONSOLE_PLUGIN + # value: 'ghcr.io/openshift-pipelines/console-plugin:main' + # After the change remove the broken-test label and run the test @smoke Scenario Outline: Start the pipeline with one resource: P-07-TC02 Given pipeline "" consists of task "" with one git resource And user is at pipelines page When user selects "Start" option from kebab menu for pipeline "" And user enters git url as "https://github.com/sclorg/nodejs-ex.git" in start pipeline modal + And user enters timeout value as "1" and "Hr" And user clicks Start button in start pipeline modal Then user will be redirected to Pipeline Run Details page And user is able to see the pipelineRuns with status as Running @@ -44,7 +55,7 @@ Feature: Pipeline Runs When user clicks Last Run value of "" Then user will be redirected to Pipeline Run Details page And user is able to see Details, YAML, TaskRuns, Parameters, Logs, Events and Output tabs - And Details tab is displayed with field names Name, Namespace, Labels, Annotations, Created At, Owner, Status, Pipeline and Triggered by + And Details tab is displayed with field names Name, Namespace, Labels, Annotations, Created At, Owner, Status and Pipeline And Actions dropdown display on the top right corner of the page Examples: @@ -57,7 +68,7 @@ Feature: Pipeline Runs Given pipeline run is displayed for "pipeline-rerun-0" without resource And user is at the Pipeline Run Details page of pipeline "pipeline-rerun-0" When user clicks Actions menu on the top right corner of the page - Then Actions menu display with the options "Rerun", "Delete PipelineRun" + Then Actions menu display with the options "rerun", "delete" PipelineRun @regression @@ -375,22 +386,23 @@ Feature: Pipeline Runs And user is at the Pipeline Details page of pipeline "pipeline-stop" When user starts the pipeline "pipeline-stop" in Pipeline Details page And user selects option "Stop" from Actions menu drop down - Then status displays as "Cancelled" in pipeline run details page + Then status displays as "Cancelling" in pipeline run details page - @regression + Marking following tests as manual to recheck them again. Not working with the present scenario + @regression @manual Scenario: SBOM information on the pipelineRun detail page: P-07-TC38 Given user has created a pipelineRun with sbom task "pipelinerun-with-sbom-link" When user navigates to PipelineRun Details page "pipelinerun-with-sbom-link" Then user can see Download SBOM and View SBOM section in PipelineRun details page - @regression + @regression @manual Scenario: Output of the pipelinerun: P-07-TC39 Given user has created a pipelineRun with sbom task "pipelinerun-with-sbom-link" When user navigates to output tab of pipelineRun details page "pipelinerun-with-sbom-link" Then user can see the results in the output tab - @regression + @regression @manual Scenario: CVE information in the pipelinerun list and details page: P-07-TC40 Given user has created a PipelineRun with scan task "pipelinerun-with-scan-task" When user navigates to PipelineRun list page @@ -399,7 +411,7 @@ Feature: Pipeline Runs And user can see the vulnerabilities section in the details page "pipelinerun-with-scan-task" - @regression + @regression @manual Scenario: View SBOM link in the pipelinerun list kebab action: P-07-TC41 Given user has created a pipelineRun with sbom task "pipelinerun-with-sbom-link" When user navigates to PipelineRun list page diff --git a/integration-tests/cypress/support/page-objects/pipelines-po.ts b/integration-tests/cypress/support/page-objects/pipelines-po.ts index 60f0f35e..95f7bc3a 100644 --- a/integration-tests/cypress/support/page-objects/pipelines-po.ts +++ b/integration-tests/cypress/support/page-objects/pipelines-po.ts @@ -279,7 +279,7 @@ export const pipelinesPO = { table: 'div[role="grid"]', pipelineName: 'tr td:nth-child(1)', pipelineRunName: 'tr td:nth-child(2)', - kebabMenu: '[data-test-id="kebab-button"]', + kebabMenu: '[data-test="kebab-button"]', columnValues: '[aria-label="Pipelines"] tbody tr td', columnNames: 'div[aria-label="Pipelines"] thead tr th', pipelineRunIcon: '[title="PipelineRun"]', @@ -302,7 +302,7 @@ export const pipelinesPO = { remove: '#confirm-action', }, startPipeline: { - sectionTitle: 'h2.odc-form-section__heading', + sectionTitle: '[class*="form__section-title"]', gitResourceDropdown: '[for="form-input-parameters-1-value-field"]', // '[id*="dropdown-resources-0"]', gitUrl: '#form-input-parameters-1-value-field', revision: '#form-input-parameters-2-value-field', diff --git a/integration-tests/cypress/support/pages/app.ts b/integration-tests/cypress/support/pages/app.ts index 7568c97b..12459d89 100644 --- a/integration-tests/cypress/support/pages/app.ts +++ b/integration-tests/cypress/support/pages/app.ts @@ -40,7 +40,6 @@ export const app = { cy.get('.co-m-loader', { timeout }).should('not.exist'); } }); - cy.get('[class*="spinner"]', { timeout }).should('not.exist'); cy.get('.skeleton-catalog--grid', { timeout }).should('not.exist'); cy.get('.loading-skeleton--table', { timeout }).should('not.exist'); cy.byTestID('skeleton-detail-view', { timeout }).should('not.exist'); diff --git a/integration-tests/cypress/support/pages/functions/common.ts b/integration-tests/cypress/support/pages/functions/common.ts index 000af337..03e985ba 100644 --- a/integration-tests/cypress/support/pages/functions/common.ts +++ b/integration-tests/cypress/support/pages/functions/common.ts @@ -1,13 +1,67 @@ import { guidedTour } from '../../../../../tests/views/guided-tour'; -import { globalPO } from '../../page-objects/global-po'; import { app } from '../app'; export const actionsDropdownMenu = { - verifyActionsMenu: () => cy.get(globalPO.actionsMenu).should('be.visible'), - clickActionMenu: () => cy.get(globalPO.actionsMenu).click(), + verifyActionsMenu: () => + cy.get('button[class*=-menu-toggle]').should('be.visible'), + clickActionMenu: () => + cy.get('button[class*=-menu-toggle]').contains('Actions').click(), selectAction: (action: string) => { actionsDropdownMenu.clickActionMenu(); - cy.byTestActionID(action).click(); + cy.get('ul[role="menu"]').should('be.visible'); + switch (action) { + case 'Start': { + cy.get('[data-test="start-pipeline"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Start last run': { + cy.get('[data-test="start-last-run"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Add Trigger': { + cy.get('[data-test="add-trigger"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Remove Trigger': { + cy.get('[data-test="remove-trigger"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Edit labels': { + cy.get('[data-test="edit-labels"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Edit annotations': { + cy.get('[data-test="edit-annotations"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Edit Pipeline': { + cy.get('[data-test="edit"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Delete Pipeline': { + cy.get('[data-test="delete"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + default: { + throw new Error('action is not available'); + } + } }, }; diff --git a/integration-tests/cypress/support/pages/functions/installOperatorOnCluster.ts b/integration-tests/cypress/support/pages/functions/installOperatorOnCluster.ts index a663027c..4a2d9c27 100644 --- a/integration-tests/cypress/support/pages/functions/installOperatorOnCluster.ts +++ b/integration-tests/cypress/support/pages/functions/installOperatorOnCluster.ts @@ -139,7 +139,7 @@ const waitForPipelineTasks = (retries = 30) => { }); }; -export const waitForDynamicPlugin = (retries: number = 5) => { +export const waitForDynamicPlugin = () => { operatorsPage.navigateToInstallOperatorsPage(); operatorsPage.verifyInstalledOperator(operators.PipelinesOperator); cy.get('[data-test-operator-row="Red Hat OpenShift Pipelines"]') diff --git a/integration-tests/cypress/support/pages/git-page.ts b/integration-tests/cypress/support/pages/git-page.ts index 471219f2..0a254b52 100644 --- a/integration-tests/cypress/support/pages/git-page.ts +++ b/integration-tests/cypress/support/pages/git-page.ts @@ -196,6 +196,10 @@ export const gitPage = { /* eslint-disable-next-line cypress/unsafe-to-chain-command */ cy.get(gitPO.pipeline.buildDropdown).scrollIntoView().click(); cy.get(gitPO.pipeline.addPipeline).should('be.visible').click(); + cy.get(gitPO.pipeline.buildDropdown).should( + 'contain.text', + 'Build using pipelines', + ); }, clickCreate: () => /* eslint-disable-next-line cypress/unsafe-to-chain-command */ diff --git a/integration-tests/cypress/support/pages/pipelines/pipelineRun-details-page.ts b/integration-tests/cypress/support/pages/pipelines/pipelineRun-details-page.ts index 3fdfd38b..dd67fd4c 100644 --- a/integration-tests/cypress/support/pages/pipelines/pipelineRun-details-page.ts +++ b/integration-tests/cypress/support/pages/pipelines/pipelineRun-details-page.ts @@ -1,6 +1,5 @@ import { detailsPage } from '../../../../../tests/views/details-page'; import { modal } from '../../../../../tests/views/modal'; -import { pipelineActions } from '../../constants'; import { pageTitle } from '../../constants/pageTitle'; import { pipelineDetailsPO, @@ -58,15 +57,31 @@ export const pipelineRunDetailsPage = { actionsDropdownMenu.clickActionMenu(); switch (action) { case 'Rerun': { - cy.byTestActionID(pipelineActions.Rerun).click(); + cy.get( + '[data-test="rerun-pipelineRun"] button[role="menuitem"]', + ).click(); cy.get(pipelineRunDetailsPO.details.sectionTitle).should('be.visible'); break; } case 'Delete Pipeline Run': { - cy.byTestActionID(pipelineActions.DeletePipelineRun).click(); + cy.get( + '[data-test="delete-pipelineRun"] button[role="menuitem"]', + ).click(); modal.modalTitleShouldContain('Delete Pipeline?'); break; } + case 'Cancel': { + cy.get('[data-test="cancel-pipelineRun"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Stop': { + cy.get('[data-test="stop-pipelineRun"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } default: { throw new Error(`${action} is not available in dropdown menu`); } @@ -99,7 +114,7 @@ export const pipelineRunDetailsPage = { cy.get('.odc-pipeline-run-details__customDetails').within(() => { cy.contains('dl dt', 'Status').should('be.visible'); cy.contains('dl dt', 'Pipeline').should('be.visible'); - cy.contains('dl dt', 'Triggered by:').should('be.visible'); + // cy.contains('dl dt', 'Triggered by:').should('be.visible'); }); }, verifyDetailsFields: () => { @@ -201,7 +216,7 @@ export const pipelineRunsPage = { cy.get('tbody tr') .eq(index) .within(() => { - cy.get(`button[data-test-id="kebab-button"]`) + cy.get(`button[data-test="kebab-button"]`) .should('be.visible') .click({ force: true }); }); diff --git a/integration-tests/cypress/support/pages/pipelines/pipelines-page.ts b/integration-tests/cypress/support/pages/pipelines/pipelines-page.ts index 21737ff4..019df211 100644 --- a/integration-tests/cypress/support/pages/pipelines/pipelines-page.ts +++ b/integration-tests/cypress/support/pages/pipelines/pipelines-page.ts @@ -76,15 +76,19 @@ export const pipelinesPage = { } }); }); - cy.get('[data-test-id="action-items"]').should('be.visible'); + cy.get('[role="menu"]').should('be.visible'); }, selectActionForPipeline: ( pipelineName: string, action: string | pipelineActions, ) => { + app.waitForDocumentLoad(); + cy.get('[data-label="Name"] [type="button"] svg').click({ force: true }); cy.get(pipelinesPO.pipelinesTable.table).within(() => { cy.get(pipelinesPO.pipelinesTable.pipelineName).each(($el, index) => { + /* eslint-disable-next-line cypress/no-unnecessary-waiting */ + cy.wait(1000); if ($el.text().includes(pipelineName)) { cy.get('tbody tr') .eq(index) @@ -96,8 +100,61 @@ export const pipelinesPage = { } }); }); - cy.byLegacyTestID('action-items').should('be.visible'); - cy.byTestActionID(action).click({ force: true }); + // cy.byLegacyTestID('action-items').should('be.visible'); + cy.get('ul[role="menu"]').should('be.visible'); + switch (action) { + case 'Start': { + cy.get('[data-test-action="start-pipeline"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Start last run': { + cy.get('[data-test-action="start-last-run"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Add Trigger': { + cy.get('[data-test-action="add-trigger"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Remove Trigger': { + cy.get('[data-test-action="remove-trigger"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Edit labels': { + cy.get('[data-test-action="edit-labels"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Edit annotations': { + cy.get('[data-test-action="edit-annotations"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Edit Pipeline': { + cy.get('[data-test-action="edit"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + case 'Delete Pipeline': { + cy.get('[data-test-action="delete"] button[role="menuitem"]') + .should('be.visible') + .click({ force: true }); + break; + } + default: { + throw new Error('action is not available'); + } + } }, verifyDefaultPipelineColumnValues: (defaultValue = '-') => { @@ -169,10 +226,21 @@ export const pipelinesPage = { search: (name: string) => { /* eslint-disable-next-line cypress/unsafe-to-chain-command */ cy.get(pipelinesPO.search).should('be.visible').clear().type(name); - // cy.get('tbody tr') + cy.get(pipelinesPO.pipelinesTable.pipelineName).each(($el, index) => { + if ($el.text().includes(name)) { + cy.get('tbody tr') + .eq(index) + .within(() => { + cy.get(`button${pipelinesPO.pipelinesTable.kebabMenu}`) + .should('be.visible') + .click({ force: true }); + }); + } + cy.byLegacyTestID(name); + }); // .eq(0) // .within(() => { - cy.byLegacyTestID(name); + // cy.byLegacyTestID(name); // }); cy.get(pipelinesPO.pipelinesTable.table).should('be.visible'); }, @@ -349,6 +417,34 @@ export const startPipelineInPipelinesPage = { }); }); }, + enterTimeoutValue: (value: string, time = 'min') => { + modal.shouldBeOpened(); + cy.get('form').within(() => { + app.waitForLoad(); + /* eslint-disable-next-line cypress/unsafe-to-chain-command */ + cy.get('input[id="timeout-input"]').clear().type(value); + cy.get('button[aria-label="Number of Min"]').click(); + switch (time) { + case 'hr': + case 'Hr': + case 'h': + cy.byTestDropDownMenu('h').click(); + break; + case 'min': + case 'Min': + case 'm': + cy.byTestDropDownMenu('m').click(); + break; + case 'sec': + case 'Sec': + case 's': + cy.byTestDropDownMenu('s').click(); + break; + default: + break; + } + }); + }, clickStart: () => cy.get(pipelinesPO.startPipeline.start).click(), clickShowCredentialOptions: () => cy.byButtonText('Show credential options').click(), diff --git a/integration-tests/cypress/support/step-definitions/common/pipelines.ts b/integration-tests/cypress/support/step-definitions/common/pipelines.ts index 2924b2d0..566e2ae5 100644 --- a/integration-tests/cypress/support/step-definitions/common/pipelines.ts +++ b/integration-tests/cypress/support/step-definitions/common/pipelines.ts @@ -1,7 +1,7 @@ import { Given, Then, When } from '@badeball/cypress-cucumber-preprocessor'; import { detailsPage } from '../../../../../tests/views/details-page'; import { modal } from '../../../../../tests/views/modal'; -import { pipelineActions } from '../../constants'; +import { addOptions, pipelineActions } from '../../constants'; import { devNavigationMenu } from '../../constants/global'; import { pageTitle } from '../../constants/pageTitle'; import { pipelinesPO } from '../../page-objects'; @@ -11,24 +11,41 @@ import { pipelinesPage, startPipelineInPipelinesPage, } from '../../pages'; +import { addPage } from '../../pages/add-page'; import { app, navigateTo } from '../../pages/app'; +import { gitPage } from '../../pages/git-page'; import { topologyPage, topologySidePane } from '../../pages/topology-page'; When( 'user selects {string} option from kebab menu for pipeline {string}', (option: string, pipelineName: string) => { - pipelinesPage.search(pipelineName); + // pipelinesPage.search(pipelineName); pipelinesPage.selectActionForPipeline(pipelineName, option); }, ); +Given( + 'user created workload {string} from add page with pipeline', + (pipelineName: string) => { + navigateTo(devNavigationMenu.Add); + addPage.selectCardFromOptions(addOptions.ImportFromGit); + gitPage.enterGitUrl('https://github.com/sclorg/nodejs-ex.git'); + gitPage.verifyValidatedMessage('https://github.com/sclorg/nodejs-ex.git'); + gitPage.enterComponentName(pipelineName); + gitPage.selectResource('deployment'); + gitPage.selectAddPipeline(); + gitPage.clickCreate(); + topologyPage.verifyTopologyPage(); + }, +); + Given( 'pipeline run is displayed for {string} with resource', (pipelineName: string) => { pipelinesPage.clickOnCreatePipeline(); cy.get('#form-radiobutton-editorType-form-field').click(); pipelineBuilderPage.createPipelineWithGitResources(pipelineName); - cy.byLegacyTestID('breadcrumb-link-0').click(); + cy.byTestID('breadcrumb-link').click(); pipelinesPage.search(pipelineName); pipelinesPage.selectActionForPipeline(pipelineName, pipelineActions.Start); modal.modalTitleShouldContain('Start Pipeline'); @@ -52,7 +69,7 @@ Given( pipelineName, workspaceName, ); - cy.byLegacyTestID('breadcrumb-link-0').click(); + cy.byTestID('breadcrumb-link').click(); pipelinesPage.search(pipelineName); pipelinesPage.selectActionForPipeline(pipelineName, pipelineActions.Start); modal.modalTitleShouldContain('Start Pipeline'); @@ -74,7 +91,7 @@ Given( 'git-clone', workspaceName, ); - cy.byLegacyTestID('breadcrumb-link-0').click(); + cy.byTestID('breadcrumb-link').click(); pipelinesPage.search(pipelineName); }, ); @@ -88,7 +105,7 @@ Given( 'git-clone', workspaceName, ); - cy.byLegacyTestID('breadcrumb-link-0').click(); + cy.byTestID('breadcrumb-link').click(); pipelinesPage.search(pipelineName); }, ); diff --git a/integration-tests/cypress/support/step-definitions/pipelines/create-from-add-options.ts b/integration-tests/cypress/support/step-definitions/pipelines/create-from-add-options.ts index 0cd5c881..8d931ff1 100644 --- a/integration-tests/cypress/support/step-definitions/pipelines/create-from-add-options.ts +++ b/integration-tests/cypress/support/step-definitions/pipelines/create-from-add-options.ts @@ -175,21 +175,6 @@ Then( }, ); -Given( - 'user created workload {string} from add page with pipeline', - (pipelineName: string) => { - navigateTo(devNavigationMenu.Add); - addPage.selectCardFromOptions(addOptions.ImportFromGit); - gitPage.enterGitUrl('https://github.com/sclorg/nodejs-ex.git'); - gitPage.verifyValidatedMessage('https://github.com/sclorg/nodejs-ex.git'); - gitPage.enterComponentName(pipelineName); - gitPage.selectResource('deployment'); - gitPage.selectAddPipeline(); - gitPage.clickCreate(); - topologyPage.verifyTopologyPage(); - }, -); - Given('user is at Developer Catalog form with builder images', () => { addPage.selectCardFromOptions(addOptions.DeveloperCatalog); }); diff --git a/integration-tests/cypress/support/step-definitions/pipelines/pipelines-runs.ts b/integration-tests/cypress/support/step-definitions/pipelines/pipelines-runs.ts index 6f627ece..a0bd3166 100644 --- a/integration-tests/cypress/support/step-definitions/pipelines/pipelines-runs.ts +++ b/integration-tests/cypress/support/step-definitions/pipelines/pipelines-runs.ts @@ -53,6 +53,15 @@ When( }, ); +When( + 'user enters timeout value as {string} and {string}', + (value: string, time: string) => { + modal.shouldBeOpened(); + app.waitForLoad(); + startPipelineInPipelinesPage.enterTimeoutValue(value, time); + }, +); + When( 'user enters revision as {string} in start pipeline modal', (revision: string) => { @@ -133,7 +142,7 @@ Given( (pipelineName: string) => { pipelinesPage.clickOnCreatePipeline(); pipelineBuilderPage.createPipelineFromBuilderPage(pipelineName); - cy.byLegacyTestID('breadcrumb-link-0').click(); + cy.byTestID('breadcrumb-link').click(); pipelinesPage.selectActionForPipeline(pipelineName, pipelineActions.Start); pipelineRunDetailsPage.verifyTitle(); navigateTo(devNavigationMenu.Pipelines); @@ -142,31 +151,31 @@ Given( }, ); -Given( - 'pipeline run is displayed for {string} with resource', - (pipelineName: string) => { - pipelinesPage.clickOnCreatePipeline(); - pipelineBuilderPage.createPipelineWithGitResources(pipelineName); - cy.byLegacyTestID('breadcrumb-link-0').click(); - pipelinesPage.selectActionForPipeline(pipelineName, pipelineActions.Start); - modal.modalTitleShouldContain('Start Pipeline'); - startPipelineInPipelinesPage.addGitResource( - 'https://github.com/sclorg/nodejs-ex.git', - ); - modal.submit(); - pipelineRunDetailsPage.verifyTitle(); - navigateTo(devNavigationMenu.Pipelines); - pipelinesPage.search(pipelineName); - cy.get(pipelinesPO.pipelinesTable.pipelineRunIcon).should('be.visible'); - }, -); +// Given( +// 'pipeline run is displayed for {string} with resource', +// (pipelineName: string) => { +// pipelinesPage.clickOnCreatePipeline(); +// pipelineBuilderPage.createPipelineWithGitResources(pipelineName); +// cy.byTestID('breadcrumb-link').click(); +// pipelinesPage.selectActionForPipeline(pipelineName, pipelineActions.Start); +// modal.modalTitleShouldContain('Start Pipeline'); +// startPipelineInPipelinesPage.addGitResource( +// 'https://github.com/sclorg/nodejs-ex.git', +// ); +// modal.submit(); +// pipelineRunDetailsPage.verifyTitle(); +// navigateTo(devNavigationMenu.Pipelines); +// pipelinesPage.search(pipelineName); +// cy.get(pipelinesPO.pipelinesTable.pipelineRunIcon).should('be.visible'); +// }, +// ); When('user clicks Last Run value of {string}', (pipelineName: string) => { pipelinesPage.selectPipelineRun(pipelineName); }); When('user navigates to pipelineRuns page', () => { - cy.byLegacyTestID('breadcrumb-link-0').click(); + cy.byTestID('breadcrumb-link').click(); pipelineRunsPage.verifyTitle(); }); @@ -177,6 +186,13 @@ When( }, ); +When( + 'user selects option {string} from Actions menu drop down', + (action: string) => { + pipelineRunDetailsPage.selectFromActionsDropdown(action); + }, +); + Then( 'user is able to see kebab menu options Rerun, Delete Pipeline Run', () => { @@ -193,7 +209,7 @@ Then( ); Then( - 'Details tab is displayed with field names Name, Namespace, Labels, Annotations, Created At, Owner, Status, Pipeline and Triggered by', + 'Details tab is displayed with field names Name, Namespace, Labels, Annotations, Created At, Owner, Status and Pipeline', () => { pipelineRunDetailsPage.verifyFields(); }, @@ -211,7 +227,9 @@ When( 'user selects Rerun option from kebab menu of {string}', (pipelineName: string) => { pipelineRunsPage.selectKebabMenu(pipelineName); - cy.byTestActionID(pipelineActions.Rerun).click(); + cy.get( + '[data-test-action="reRun-pipelineRun"] button[role="menuitem"]', + ).click(); }, ); @@ -261,7 +279,7 @@ Given( ); When('user navigates to Pipeline runs page', () => { - cy.byLegacyTestID('breadcrumb-link-0').click(); + cy.byTestID('breadcrumb-link').click(); }); When('user selects {string} option from Actions menu', (option: string) => { @@ -338,7 +356,7 @@ Given('pipeline {string} is executed for 3 times', (pipelineName: string) => { }); Given('user is at the Pipeline Runs page', () => { - cy.byLegacyTestID('breadcrumb-link-0').click(); + cy.byTestID('breadcrumb-link').click(); pipelineRunsPage.verifyTitle(); }); @@ -347,7 +365,7 @@ When( (pipelineName: string, status: string) => { navigateTo(devNavigationMenu.Pipelines); pipelinesPage.selectPipelineRun(pipelineName); - cy.byLegacyTestID('breadcrumb-link-0').click(); + cy.byTestID('breadcrumb-link').click(); pipelineRunsPage.filterByStatus(status); cy.get('[aria-label="close"]').should('be.visible'); }, @@ -400,8 +418,11 @@ When('user clicks Actions menu on the top right corner of the page', () => { When( 'user is able to see Actions menu options {string}, {string}, {string}, {string} in pipeline run page', (el1, el2, el3, el4: string) => { - cy.byLegacyTestID('breadcrumb-link-0').contains('PipelineRun'); - cy.byLegacyTestID('action-items') + cy.byTestID('breadcrumb-link').contains('PipelineRun'); + cy.get('button[class*="menu-toggle"]') + .contains('Actions') + .click({ force: true }); + cy.get('ul.action-menu-dropdown') .should('contain', el1) .and('contain', el2) .and('contain', el3) @@ -429,10 +450,10 @@ Then('start button is enabled', () => { }); Then( - 'Actions menu display with the options {string}, {string}', + 'Actions menu display with the options {string}, {string} PipelineRun', (option1: string, option2: string) => { - cy.byTestActionID(option1).should('be.visible'); - cy.byTestActionID(option2).should('be.visible'); + cy.byTestID(`${option1}-pipelineRun`).should('be.visible'); + cy.byTestID(`${option2}-pipelineRun`).should('be.visible'); }, ); @@ -736,7 +757,7 @@ Given( (pipelineName: string) => { pipelinesPage.clickOnCreatePipeline(); pipelineBuilderPage.createPipelineWithParameters(pipelineName); - cy.byLegacyTestID('breadcrumb-link-0').click(); + cy.byTestID('breadcrumb-link').click(); pipelinesPage.selectActionForPipeline(pipelineName, pipelineActions.Start); modal.modalTitleShouldContain('Start Pipeline'); startPipelineInPipelinesPage.clickStart(); @@ -762,8 +783,8 @@ When( addPage.selectCardFromOptions(addOptions.ImportFromGit); gitPage.enterGitUrl('https://github.com/sclorg/golang-ex'); devFilePage.verifyValidatedMessage('https://github.com/sclorg/golang-ex'); - gitPage.selectAddPipeline(); gitPage.enterWorkloadName(pipelineName); + gitPage.selectAddPipeline(); gitPage.clickCreate(); topologyPage.verifyTopologyPage(); }, @@ -784,7 +805,7 @@ When( (pipelineName: string) => { pipelineDetailsPage.verifyTitle(pipelineName); cy.get(triggerTemplateDetailsPO.detailsTab).should('be.visible').click(); - cy.byLegacyTestID('breadcrumb-link-0').click(); + cy.byTestID('breadcrumb-link').click(); pipelinesPage.selectActionForPipeline(pipelineName, pipelineActions.Start); modal.modalTitleShouldContain('Start Pipeline'); startPipelineInPipelinesPage.clickStart();