diff --git a/frontend/packages/integration-tests-cypress/support/admin.ts b/frontend/packages/integration-tests-cypress/support/admin.ts index e7d39fcef007..3f6de14b053b 100644 --- a/frontend/packages/integration-tests-cypress/support/admin.ts +++ b/frontend/packages/integration-tests-cypress/support/admin.ts @@ -13,6 +13,7 @@ declare global { Cypress.Commands.add('initAdmin', () => { cy.log('redirect to home'); cy.visit('/'); + cy.byTestID('loading-indicator').should('not.exist'); cy.log('ensure perspective switcher is set to Administrator'); nav.sidenav.switcher.changePerspectiveTo('Administrator'); nav.sidenav.switcher.shouldHaveText('Administrator'); diff --git a/frontend/packages/integration-tests-cypress/support/project.ts b/frontend/packages/integration-tests-cypress/support/project.ts index 5e38de660239..f220f0998523 100644 --- a/frontend/packages/integration-tests-cypress/support/project.ts +++ b/frontend/packages/integration-tests-cypress/support/project.ts @@ -51,6 +51,6 @@ Cypress.Commands.add('deleteProject', (name: string) => { listPage.titleShouldHaveText('Projects'); }); -Cypress.Commands.add('deleteProjectWithCLI', (name: string) => { - cy.exec(`oc delete project ${name}`); +Cypress.Commands.add('deleteProjectWithCLI', (name: string, timeout?: number) => { + cy.exec(`oc delete project ${name}`, { timeout }); }); diff --git a/frontend/packages/integration-tests-cypress/tests/app/debug-pod.cy.ts b/frontend/packages/integration-tests-cypress/tests/app/debug-pod.cy.ts index e9283f5790fd..b3ad595ea6ef 100644 --- a/frontend/packages/integration-tests-cypress/tests/app/debug-pod.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/app/debug-pod.cy.ts @@ -31,10 +31,11 @@ spec: describe('Debug pod', () => { before(() => { cy.login(); - cy.visit('/'); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); - cy.createProject(testName); + cy.createProjectWithCLI(testName); + }); + + beforeEach(() => { + cy.initAdmin(); }); afterEach(() => { @@ -42,14 +43,8 @@ describe('Debug pod', () => { }); after(() => { - cy.visit(`/k8s/ns/${testName}/pods`); - listPage.rows.shouldBeLoaded(); - listPage.filter.byName(POD_NAME); - listPage.rows.clickKebabAction(POD_NAME, 'Delete Pod'); - modal.shouldBeOpened(); - modal.submit(); - modal.shouldBeClosed(); - cy.deleteProject(testName); + cy.visit('/'); + cy.deleteProjectWithCLI(testName); cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/app/demo-dynamic-plugin.cy.ts b/frontend/packages/integration-tests-cypress/tests/app/demo-dynamic-plugin.cy.ts index 47f1d8a8dfbe..74f35d3a854c 100644 --- a/frontend/packages/integration-tests-cypress/tests/app/demo-dynamic-plugin.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/app/demo-dynamic-plugin.cy.ts @@ -21,19 +21,14 @@ const CHECK_UPDATES_ALIAS = 'checkUpdates'; 2a. build the plugin locally, and run the server 2b. using bridge running with the plugin arguments that point to the local dynamic plugin server and i18n namespace e.g., ./bin/bridge -plugins=console-demo-plugin=http://localhost:9001 -i18n-namespaces=plugin__console-demo-plugin - 2c. will intercept the check update call to mock a toast notification that a plugin has been enabled - 2d. will not use all workload definitions defined in the yaml (not using the env variable for pull spec) + 2c. will not use all workload definitions defined in the yaml (not using the env variable for pull spec) 3. run on ci: 3a. ci will build the dynamic plugin and provide the pullspec in the env var: CYPRESS_PLUGIN_PULL_SPEC 3b. that pull spec will be used to create the deployment on the cluster - 3c. intercepting the check-updates call will not occur as the toast will appear when the plugin is enabled 4. the scaffolding should remain the same except modifying the constants above */ const enableDemoPlugin = (enable: boolean) => { - cy.visit('/'); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); // find console demo plugin and enable it cy.visit('k8s/cluster/operator.openshift.io~v1~Console/cluster/console-plugins'); cy.url().should( @@ -58,17 +53,7 @@ const enableDemoPlugin = (enable: boolean) => { .within(() => { cy.byTestID('edit-console-plugin').contains(enable ? 'Enabled' : 'Disabled'); }); - if (isLocalDevEnvironment) { - // for local dev env trigger a change by removing the plugin to activate the toast - cy.intercept('/api/check-updates', { - consoleCommit: '', - plugins: [], - }).as(CHECK_UPDATES_ALIAS); - cy.wait(`@${CHECK_UPDATES_ALIAS}`, { requestTimeout: CHECK_UPDATE_WAIT }); - cy.log('Running plugin test locally using bridge.'); - } else { - cy.log(`Running plugin test on ci using PLUGIN_PULL_SPEC: ${PLUGIN_PULL_SPEC}`); - } + cy.log(`Running plugin test on ci using PLUGIN_PULL_SPEC: ${PLUGIN_PULL_SPEC}`); cy.byTestID(refreshWebConsoleLink, { timeout: CHECK_UPDATE_WAIT }) .should('exist') .then(() => { @@ -101,9 +86,7 @@ if (!Cypress.env('OPENSHIFT_CI') || Cypress.env('PLUGIN_PULL_SPEC')) { describe('Demo dynamic plugin test', () => { before(() => { cy.login(); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); - cy.createProject(PLUGIN_NAME); + cy.createProjectWithCLI(PLUGIN_NAME); cy.readFile(`${PLUGIN_PATH}/oc-manifest.yaml`).then((textManifest) => { const yamlManifest = safeLoadAll(textManifest); const deployment = yamlManifest.find(({ kind }) => kind === 'Deployment'); @@ -150,7 +133,9 @@ if (!Cypress.env('OPENSHIFT_CI') || Cypress.env('PLUGIN_PULL_SPEC')) { listPage.rows.shouldBeLoaded(); listPage.filter.byName(PLUGIN_NAME); listPage.rows.shouldExist(PLUGIN_NAME); - enableDemoPlugin(true); + if (!isLocalDevEnvironment && PLUGIN_PULL_SPEC) { + enableDemoPlugin(true); + } }); }); }); @@ -160,8 +145,10 @@ if (!Cypress.env('OPENSHIFT_CI') || Cypress.env('PLUGIN_PULL_SPEC')) { }); after(() => { - enableDemoPlugin(false); - cy.deleteProject(PLUGIN_NAME); + if (!isLocalDevEnvironment && PLUGIN_PULL_SPEC) { + enableDemoPlugin(false); + } + cy.deleteProjectWithCLI(PLUGIN_NAME); cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/app/filtering-and-searching.cy.ts b/frontend/packages/integration-tests-cypress/tests/app/filtering-and-searching.cy.ts index 84a6a2aaec61..f37487bcc65d 100644 --- a/frontend/packages/integration-tests-cypress/tests/app/filtering-and-searching.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/app/filtering-and-searching.cy.ts @@ -14,10 +14,8 @@ const WORKLOAD_LABEL = `lbl-filter=${testName}`; describe('Filtering and Searching', () => { before(() => { cy.login(); - cy.visit('/'); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); - cy.createProject(testName); + cy.initAdmin(); + cy.createProjectWithCLI(testName); cy.visit(`/k8s/ns/${testName}/deployments`); listPage.clickCreateYAMLbutton(); cy.byTestID('yaml-view-input').click(); @@ -36,6 +34,10 @@ describe('Filtering and Searching', () => { }); }); + beforeEach(() => { + cy.initAdmin(); + }); + afterEach(() => { checkErrors(); }); @@ -48,7 +50,7 @@ describe('Filtering and Searching', () => { modal.shouldBeOpened(); modal.submit(); modal.shouldBeClosed(); - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/app/node-terminal.cy.ts b/frontend/packages/integration-tests-cypress/tests/app/node-terminal.cy.ts index 42c82bc4f84a..daf835f310cb 100644 --- a/frontend/packages/integration-tests-cypress/tests/app/node-terminal.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/app/node-terminal.cy.ts @@ -5,7 +5,10 @@ import { listPage } from '../../views/list-page'; describe('Node terminal', () => { before(() => { cy.login(); - cy.visit('/'); + }); + + beforeEach(() => { + cy.initAdmin(); }); afterEach(() => { diff --git a/frontend/packages/integration-tests-cypress/tests/app/overview.cy.ts b/frontend/packages/integration-tests-cypress/tests/app/overview.cy.ts index 5b5c834946f3..3753977e5100 100644 --- a/frontend/packages/integration-tests-cypress/tests/app/overview.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/app/overview.cy.ts @@ -25,10 +25,7 @@ const overviewResources = ImmutableSet([ describe('Visiting Overview page', () => { before(() => { cy.login(); - cy.visit('/'); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); - cy.createProject(testName); + cy.createProjectWithCLI(testName); }); afterEach(() => { @@ -40,6 +37,7 @@ describe('Visiting Overview page', () => { const resourceName = `${testName}-${kindModel.kind.toLowerCase()}`; before(() => { + cy.initAdmin(); cy.visit(`k8s/ns/${testName}/${kindModel.plural}/~new`); masthead.username.shouldBeVisible(); yamlEditor.isLoaded(); @@ -57,6 +55,10 @@ describe('Visiting Overview page', () => { }); }); + beforeEach(() => { + cy.initAdmin(); + }); + it(`displays a ${kindModel.id} in the overview list page`, () => { cy.visit(`/k8s/cluster/projects/${testName}/workloads?view=list`); overviewPage.projectOverviewShouldBeVisible(); diff --git a/frontend/packages/integration-tests-cypress/tests/app/poll-console-updates.cy.ts b/frontend/packages/integration-tests-cypress/tests/app/poll-console-updates.cy.ts index 86c4b0aa6dda..c5e2c30733cf 100644 --- a/frontend/packages/integration-tests-cypress/tests/app/poll-console-updates.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/app/poll-console-updates.cy.ts @@ -100,6 +100,7 @@ describe('PollConsoleUpdates Test', () => { cy.wait(`@${CHECK_UPDATES_ALIAS}`, WAIT_OPTIONS); cy.intercept(PLUGIN_MANIFEST_URL2, { forceNetworkError: true }).as(CHECK_MANIFEST_ALIAS2); cy.wait(`@${CHECK_MANIFEST_ALIAS2}`, WAIT_OPTIONS); + // cy.wait(`@${CHECK_MANIFEST_ALIAS2}`, WAIT_OPTIONS).should('have.property', 'error'); cy.byTestID('loading-indicator').should('not.exist'); cy.get(refreshWebConsoleLink).should('not.exist'); cy.intercept(PLUGIN_MANIFEST_URL2, PLUGIN_MANIFEST_DEFAULT2).as(CHECK_MANIFEST_ALIAS2); diff --git a/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-cli-download.cy.ts b/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-cli-download.cy.ts index c2b023b4bcf6..74d6bf2a8349 100644 --- a/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-cli-download.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-cli-download.cy.ts @@ -29,8 +29,10 @@ describe(`${crd} CRD`, () => { before(() => { cy.login(); - cy.visit('/'); - cy.byLegacyTestID('resource-title').contains('Overview'); + }); + + beforeEach(() => { + cy.initAdmin(); }); afterEach(() => { diff --git a/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-external-log-link.cy.ts b/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-external-log-link.cy.ts index c6c7e0b03632..bca6583c1500 100644 --- a/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-external-log-link.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-external-log-link.cy.ts @@ -19,10 +19,11 @@ describe(`${crd} CRD`, () => { before(() => { cy.login(); - cy.visit('/'); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); - cy.createProject(testName); + cy.createProjectWithCLI(testName); + }); + + beforeEach(() => { + cy.initAdmin(); }); afterEach(() => { @@ -30,7 +31,7 @@ describe(`${crd} CRD`, () => { }); after(() => { - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-link.cy.ts b/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-link.cy.ts index 58cc608c1659..bf607b7e18d4 100644 --- a/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-link.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-link.cy.ts @@ -30,7 +30,10 @@ describe(`${crd} CRD`, () => { before(() => { cy.login(); - cy.visit('/'); + }); + + beforeEach(() => { + cy.initAdmin(); }); afterEach(() => { diff --git a/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-notification.cy.ts b/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-notification.cy.ts index 7483a4340d56..f1be06f208ef 100644 --- a/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-notification.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crd-extensions/console-notification.cy.ts @@ -20,7 +20,10 @@ describe(`${crd} CRD`, () => { before(() => { cy.login(); - cy.visit('/'); + }); + + beforeEach(() => { + cy.initAdmin(); }); afterEach(() => { diff --git a/frontend/packages/integration-tests-cypress/tests/crud/add-storage-crud.cy.ts b/frontend/packages/integration-tests-cypress/tests/crud/add-storage-crud.cy.ts index 8c56e19fb2ea..53bbf5543938 100644 --- a/frontend/packages/integration-tests-cypress/tests/crud/add-storage-crud.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crud/add-storage-crud.cy.ts @@ -20,7 +20,11 @@ const resourceObjs = describe('Add storage is applicable for all workloads', () => { before(() => { cy.login(); - cy.createProject(testName); + cy.createProjectWithCLI(testName); + }); + + beforeEach(() => { + cy.initAdmin(); }); afterEach(() => { @@ -37,7 +41,7 @@ describe('Add storage is applicable for all workloads', () => { console.error(`Failed to delete ${resourceType} example:\n${error}`); } }); - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName, 300000); // increase timeout to allow cascading deletes above to complete cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/crud/annotations.cy.ts b/frontend/packages/integration-tests-cypress/tests/crud/annotations.cy.ts index a618034a94e4..4c5cba4377ac 100644 --- a/frontend/packages/integration-tests-cypress/tests/crud/annotations.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crud/annotations.cy.ts @@ -7,10 +7,14 @@ import { listPage } from '../../views/list-page'; import { modal } from '../../views/modal'; import { nav } from '../../views/nav'; import * as yamlEditor from '../../views/yaml-editor'; +import { projectDropdown } from '../../views/common'; const createExampleConfigMapInstance = () => { + cy.initAdmin(); nav.sidenav.clickNavLink(['Workloads', 'ConfigMaps']); cy.byLegacyTestID('resource-title').should('have.text', 'ConfigMaps'); + projectDropdown.selectProject(testName); + projectDropdown.shouldContain(testName); listPage.clickCreateYAMLbutton(); cy.byTestID('yaml-view-input').click(); cy.byTestID('resource-sidebar').should('exist'); @@ -66,10 +70,7 @@ const nameValueEquals = (row: JQuery, name: string, value: string) describe('Annotations', () => { before(() => { cy.login(); - cy.visit('/'); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); - cy.createProject(testName); + cy.createProjectWithCLI(testName); createExampleConfigMapInstance(); }); @@ -79,7 +80,7 @@ describe('Annotations', () => { after(() => { deleteExampleConfigMapInstance(); - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/crud/bulk-create-resources.cy.ts b/frontend/packages/integration-tests-cypress/tests/crud/bulk-create-resources.cy.ts index 58b83695fd41..283eae5cd573 100644 --- a/frontend/packages/integration-tests-cypress/tests/crud/bulk-create-resources.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crud/bulk-create-resources.cy.ts @@ -75,10 +75,11 @@ stringData: before(() => { cy.login(); - cy.visit('/'); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); - cy.createProject(namespace); + cy.createProjectWithCLI(namespace); + }); + + beforeEach(() => { + cy.initAdmin(); }); afterEach(() => { @@ -86,7 +87,7 @@ stringData: }); after(() => { - cy.deleteProject(namespace); + cy.deleteProjectWithCLI(namespace); cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/crud/customresourcedefinition.cy.ts b/frontend/packages/integration-tests-cypress/tests/crud/customresourcedefinition.cy.ts index 73924a2cc4bf..cbd3231e08bb 100644 --- a/frontend/packages/integration-tests-cypress/tests/crud/customresourcedefinition.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crud/customresourcedefinition.cy.ts @@ -73,10 +73,11 @@ describe('CustomResourceDefinitions', () => { before(() => { cy.login(); - cy.visit('/'); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); - cy.createProject(testName); + cy.createProjectWithCLI(testName); + }); + + beforeEach(() => { + cy.initAdmin(); }); afterEach(() => { @@ -84,7 +85,7 @@ describe('CustomResourceDefinitions', () => { }); after(() => { - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/crud/image-pull-secret.cy.ts b/frontend/packages/integration-tests-cypress/tests/crud/image-pull-secret.cy.ts index 3a9bd914b190..6d34b3155805 100644 --- a/frontend/packages/integration-tests-cypress/tests/crud/image-pull-secret.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crud/image-pull-secret.cy.ts @@ -1,6 +1,7 @@ import { checkErrors, testName } from '../../support'; import { listPage } from '../../views/list-page'; import { nav } from '../../views/nav'; +import { projectDropdown } from '../../views/common'; const clickCreateImagePullSecretDropdownButton = () => { cy.byTestID('item-create') @@ -50,15 +51,18 @@ describe('Create image pull secret', () => { before(() => { cy.login(); - cy.visit('/'); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); - cy.createProject(testName); + cy.createProjectWithCLI(testName); + }); + + beforeEach(() => { + cy.initAdmin(); }); beforeEach(() => { nav.sidenav.clickNavLink(['Workloads', 'Secrets']); listPage.titleShouldHaveText('Secrets'); + projectDropdown.selectProject(testName); + projectDropdown.shouldContain(testName); clickCreateImagePullSecretDropdownButton(); }); @@ -67,7 +71,7 @@ describe('Create image pull secret', () => { }); after(() => { - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/crud/labels.cy.ts b/frontend/packages/integration-tests-cypress/tests/crud/labels.cy.ts index f6c2d98ae349..140867a6b3bf 100644 --- a/frontend/packages/integration-tests-cypress/tests/crud/labels.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crud/labels.cy.ts @@ -25,10 +25,8 @@ describe('Editing labels', () => { before(() => { cy.login(); - cy.visit('/'); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); - cy.createProject(testName); + cy.initAdmin(); + cy.createProjectWithCLI(testName); cy.visit(`k8s/ns/${testName}/${plural}/~new`); yamlEditor.isLoaded(); yamlEditor.getEditorContent().then((content) => { @@ -45,7 +43,7 @@ describe('Editing labels', () => { }); after(() => { - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/crud/namespace-crud.cy.ts b/frontend/packages/integration-tests-cypress/tests/crud/namespace-crud.cy.ts index 4c72cc334bf3..c6e179946f42 100644 --- a/frontend/packages/integration-tests-cypress/tests/crud/namespace-crud.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crud/namespace-crud.cy.ts @@ -8,9 +8,11 @@ import { nav } from '../../views/nav'; describe('Namespace', () => { before(() => { cy.login(); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); - cy.createProject(testName); + cy.createProjectWithCLI(testName); + }); + + beforeEach(() => { + cy.initAdmin(); }); afterEach(() => { @@ -18,7 +20,7 @@ describe('Namespace', () => { }); after(() => { - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); }); @@ -31,7 +33,7 @@ describe('Namespace', () => { nav.sidenav.clickNavLink(['Administration', 'Namespaces']); listPage.rows.shouldNotExist(newName); listPage.filter.byName(testName); - listPage.rows.shouldExist(testName); // created via cy.createProject(testName) above + listPage.rows.shouldExist(testName); // created via cy.createProjectWithCLI(testName) above cy.testA11y('Namespace List page'); cy.log('creates the Namespace'); diff --git a/frontend/packages/integration-tests-cypress/tests/crud/other-routes.cy.ts b/frontend/packages/integration-tests-cypress/tests/crud/other-routes.cy.ts index 5befb150703a..9fdaf977a005 100644 --- a/frontend/packages/integration-tests-cypress/tests/crud/other-routes.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crud/other-routes.cy.ts @@ -8,6 +8,10 @@ describe('Visiting other routes', () => { cy.login(); }); + beforeEach(() => { + cy.initAdmin(); + }); + afterEach(() => { checkErrors(); }); @@ -142,6 +146,7 @@ describe('Test perspective query parameters', () => { }); beforeEach(() => { + cy.initAdmin(); cy.visit('/k8s/cluster/projects'); listPage.rows.shouldBeLoaded(); }); @@ -155,8 +160,6 @@ describe('Test perspective query parameters', () => { }); it('tests Developer query parameter', () => { - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); cy.visit('/topology/all-namespaces', { qs: { view: 'graph', diff --git a/frontend/packages/integration-tests-cypress/tests/crud/quotas.cy.ts b/frontend/packages/integration-tests-cypress/tests/crud/quotas.cy.ts index 071f28dafb27..0fdcd7e8bd60 100644 --- a/frontend/packages/integration-tests-cypress/tests/crud/quotas.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crud/quotas.cy.ts @@ -86,7 +86,7 @@ const deleteClusterExamples = () => { describe('Quotas', () => { before(() => { cy.login(); - cy.createProject(testName); + cy.createProjectWithCLI(testName); createExampleQuotas(); }); @@ -96,7 +96,7 @@ describe('Quotas', () => { after(() => { deleteClusterExamples(); - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/crud/resource-crud.cy.ts b/frontend/packages/integration-tests-cypress/tests/crud/resource-crud.cy.ts index 65ac5f254a4c..997d2e8a083b 100644 --- a/frontend/packages/integration-tests-cypress/tests/crud/resource-crud.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crud/resource-crud.cy.ts @@ -8,6 +8,7 @@ import { errorMessage } from '../../views/form'; import { listPage, ListPageSelector } from '../../views/list-page'; import { modal } from '../../views/modal'; import * as yamlEditor from '../../views/yaml-editor'; +import { init } from 'i18next'; type TestDefinition = { kind: string; @@ -20,7 +21,7 @@ type TestDefinition = { describe('Kubernetes resource CRUD operations', () => { before(() => { cy.login(); - cy.createProject(testName); + cy.createProjectWithCLI(testName); }); afterEach(() => { @@ -28,7 +29,7 @@ describe('Kubernetes resource CRUD operations', () => { }); after(() => { - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); }); @@ -133,6 +134,10 @@ describe('Kubernetes resource CRUD operations', () => { describe(kind, () => { const name = `${testName}-${_.kebabCase(kind)}`; + beforeEach(() => { + cy.initAdmin(); + }); + it(`creates the resource instance`, () => { cy.visit( `${namespaced ? `/k8s/ns/${testName}` : '/k8s/cluster'}/${resource}?name=${testName}`, @@ -204,7 +209,7 @@ describe('Kubernetes resource CRUD operations', () => { }); it('displays detail view for newly created resource instance', () => { - cy.url().should('include', `/${name}`); + cy.visit(`${namespaced ? `/k8s/ns/${testName}` : '/k8s/cluster'}/${resource}/${name}`); detailsPage.isLoaded(); detailsPage.titleShouldContain(name); cy.testA11y(`Details page for ${kind}: ${name}`); diff --git a/frontend/packages/integration-tests-cypress/tests/crud/roles-rolebindings.cy.ts b/frontend/packages/integration-tests-cypress/tests/crud/roles-rolebindings.cy.ts index 37fc13a222ef..1d13823d9841 100644 --- a/frontend/packages/integration-tests-cypress/tests/crud/roles-rolebindings.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crud/roles-rolebindings.cy.ts @@ -105,7 +105,7 @@ const deleteClusterExamples = () => { describe('Roles and RoleBindings', () => { before(() => { cy.login(); - cy.createProject(testName); + cy.createProjectWithCLI(testName); createExampleRoles(); createExampleRoleBindings(); }); @@ -116,7 +116,7 @@ describe('Roles and RoleBindings', () => { after(() => { deleteClusterExamples(); - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); }); @@ -175,6 +175,7 @@ describe('Roles and RoleBindings', () => { listPage.rows.shouldBeLoaded(); projectDropdown.selectProject(testName); projectDropdown.shouldContain(testName); + listPage.rows.shouldBeLoaded(); listPage.filter.by('cluster'); listPage.filter.byName(clusterRoleOrBindingName); listPage.rows.clickRowByName(clusterRoleOrBindingName); diff --git a/frontend/packages/integration-tests-cypress/tests/crud/secrets.cy.ts b/frontend/packages/integration-tests-cypress/tests/crud/secrets.cy.ts index b3bfdcc04ad3..593c6275cc90 100644 --- a/frontend/packages/integration-tests-cypress/tests/crud/secrets.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/crud/secrets.cy.ts @@ -34,10 +34,11 @@ describe('Create key/value secrets', () => { before(() => { cy.login(); - cy.visit('/'); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); - cy.createProject(testName); + cy.createProjectWithCLI(testName); + }); + + beforeEach(() => { + cy.initAdmin(); }); beforeEach(() => { @@ -59,7 +60,7 @@ describe('Create key/value secrets', () => { }); after(() => { - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/dashboards/cluster-dashboard.cy.ts b/frontend/packages/integration-tests-cypress/tests/dashboards/cluster-dashboard.cy.ts index 59a331cbc2a3..33f95d085e41 100644 --- a/frontend/packages/integration-tests-cypress/tests/dashboards/cluster-dashboard.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/dashboards/cluster-dashboard.cy.ts @@ -4,12 +4,10 @@ import { nav } from '../../views/nav'; describe('Cluster dashboard', () => { before(() => { cy.login(); - cy.visit('/'); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); }); beforeEach(() => { + cy.initAdmin(); cy.visit(`/dashboards`); }); diff --git a/frontend/packages/integration-tests-cypress/tests/dashboards/project-dashboard.cy.ts b/frontend/packages/integration-tests-cypress/tests/dashboards/project-dashboard.cy.ts index f59d18b125d2..a372595ca839 100644 --- a/frontend/packages/integration-tests-cypress/tests/dashboards/project-dashboard.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/dashboards/project-dashboard.cy.ts @@ -4,13 +4,11 @@ import { nav } from '../../views/nav'; describe('Project dashboard', () => { before(() => { cy.login(); - cy.visit('/'); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); - cy.createProject(testName); + cy.createProjectWithCLI(testName); }); beforeEach(() => { + cy.initAdmin(); cy.visit(`/k8s/cluster/projects/${testName}`); }); @@ -26,7 +24,7 @@ describe('Project dashboard', () => { const expectedValues = [ { assertion: 'have.text', value: testName }, - { assertion: 'have.text', value: 'kube:admin' }, + { assertion: 'include.text', value: ':admin' }, { assertion: 'include.text', value: `kubernetes.io/metadata.name=${testName}` }, { assertion: 'have.text', value: 'No description' }, ]; diff --git a/frontend/packages/integration-tests-cypress/tests/events/events.cy.ts b/frontend/packages/integration-tests-cypress/tests/events/events.cy.ts index ebafaffca02f..f3669c56585f 100644 --- a/frontend/packages/integration-tests-cypress/tests/events/events.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/events/events.cy.ts @@ -35,11 +35,7 @@ const testpod = { describe('Events', () => { before(() => { cy.login(); - guidedTour.close(); - cy.visit('/'); - nav.sidenav.switcher.changePerspectiveTo('Administrator'); - nav.sidenav.switcher.shouldHaveText('Administrator'); - cy.createProject(testName); + cy.createProjectWithCLI(testName); try { cy.exec(`echo '${JSON.stringify(testpod)}' | kubectl create -n ${testName} -f -`); } catch (error) { @@ -47,6 +43,10 @@ describe('Events', () => { } }); + beforeEach(() => { + cy.initAdmin(); + }); + afterEach(() => { checkErrors(); }); @@ -57,7 +57,7 @@ describe('Events', () => { } catch (error) { console.error(`\nFailed to delete pod ${name}:\n${error}`); } - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/i18n/pseudolocalization.cy.ts b/frontend/packages/integration-tests-cypress/tests/i18n/pseudolocalization.cy.ts index 82640209acde..76b4672a3d53 100644 --- a/frontend/packages/integration-tests-cypress/tests/i18n/pseudolocalization.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/i18n/pseudolocalization.cy.ts @@ -8,6 +8,10 @@ describe('Localization', () => { cy.login(); }); + beforeEach(() => { + cy.initAdmin(); + }); + afterEach(() => { checkErrors(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/monitoring/monitoring.cy.ts b/frontend/packages/integration-tests-cypress/tests/monitoring/monitoring.cy.ts index 91f697c2a1c4..46a428c78966 100644 --- a/frontend/packages/integration-tests-cypress/tests/monitoring/monitoring.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/monitoring/monitoring.cy.ts @@ -26,7 +26,11 @@ const shouldBeWatchdogSilencePage = () => { describe('Monitoring: Alerts', () => { before(() => { cy.login(); - cy.createProject(testName); + cy.createProjectWithCLI(testName); + }); + + beforeEach(() => { + cy.initAdmin(); }); afterEach(() => { @@ -34,7 +38,7 @@ describe('Monitoring: Alerts', () => { }); after(() => { - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/storage/clone.cy.ts b/frontend/packages/integration-tests-cypress/tests/storage/clone.cy.ts index 6adec3b756fe..9ba52c4fc55b 100644 --- a/frontend/packages/integration-tests-cypress/tests/storage/clone.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/storage/clone.cy.ts @@ -13,7 +13,7 @@ if (Cypress.env('BRIDGE_AWS')) { describe('Clone Tests', () => { before(() => { cy.login(); - cy.createProject(testName); + cy.createProjectWithCLI(testName); cy.exec(`echo '${JSON.stringify(PVC)}' | oc apply -n ${testName} -f -`); cy.exec(`echo '${JSON.stringify(testerDeployment)}' | oc apply -n ${testName} -f -`); nav.sidenav.clickNavLink(['Storage', 'PersistentVolumeClaims']); @@ -28,7 +28,7 @@ if (Cypress.env('BRIDGE_AWS')) { after(() => { cy.exec(`echo '${JSON.stringify(testerDeployment)}' | oc delete -n ${testName} -f -`); cy.exec(`echo '${JSON.stringify(PVC)}' | oc delete -n ${testName} -f -`); - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); }); diff --git a/frontend/packages/integration-tests-cypress/tests/storage/snapshot.cy.ts b/frontend/packages/integration-tests-cypress/tests/storage/snapshot.cy.ts index 0f8f5115b700..ab4196d3d5cd 100644 --- a/frontend/packages/integration-tests-cypress/tests/storage/snapshot.cy.ts +++ b/frontend/packages/integration-tests-cypress/tests/storage/snapshot.cy.ts @@ -14,7 +14,7 @@ if (Cypress.env('BRIDGE_AWS')) { describe('Snapshot Tests', () => { before(() => { cy.login(); - cy.createProject(testName); + cy.createProjectWithCLI(testName); cy.exec(`echo '${JSON.stringify(PVC)}' | oc apply -n ${testName} -f -`); cy.exec(`echo '${JSON.stringify(testerDeployment)}' | oc apply -n ${testName} -f -`); cy.exec(`echo '${JSON.stringify(SnapshotClass)}' | oc apply -f -`); @@ -32,7 +32,7 @@ if (Cypress.env('BRIDGE_AWS')) { cy.exec(`echo '${JSON.stringify(PVC)}' | oc delete -n ${testName} -f -`); cy.exec(`oc delete pvc ${snapshotName}-restore -n ${testName}`); cy.exec(`echo '${JSON.stringify(SnapshotClass)}' | oc delete -f -`); - cy.deleteProject(testName); + cy.deleteProjectWithCLI(testName); cy.logout(); });