diff --git a/.github/workflows/aps-cypress-e2e.yaml b/.github/workflows/aps-cypress-e2e.yaml index 23b5db5ca..dae997fd9 100644 --- a/.github/workflows/aps-cypress-e2e.yaml +++ b/.github/workflows/aps-cypress-e2e.yaml @@ -2,7 +2,7 @@ name: Build and Deploy Cypress and Execute Tests on: push: - branches: ['test', 'cypress*'] + branches: ['test', 'cypress/*'] env: DASHBOARD_PROJECT_ID: ${{ secrets.CY_DASHBOARD_PRJ_ID }} diff --git a/e2e/cypress/pageObjects/apiDirectory.ts b/e2e/cypress/pageObjects/apiDirectory.ts index f270ccfba..f0911e67e 100644 --- a/e2e/cypress/pageObjects/apiDirectory.ts +++ b/e2e/cypress/pageObjects/apiDirectory.ts @@ -58,6 +58,14 @@ class ApiDirectoryPage { cy.get(this.submitBtn).click() } + checkInactiveEnvironmentAccessReqOption(product: any, app: any){ + cy.contains('a', product.name, { timeout: 10000 }).should('be.visible'); + cy.contains(product.name).click() + cy.get(this.rqstAccessBtn).click() + cy.get(this.appSelect).select(app.name) + cy.get('[data-testid=access-rqst-app-env-' + product.environment + ']').should('not.exist'); + } + isProductDisplay(productName: string, expResult: boolean) { cy.get("button").then(($btn) => { var flag = true diff --git a/e2e/cypress/pageObjects/authProfile.ts b/e2e/cypress/pageObjects/authProfile.ts index 09ce67d09..cb69ccb7a 100644 --- a/e2e/cypress/pageObjects/authProfile.ts +++ b/e2e/cypress/pageObjects/authProfile.ts @@ -165,6 +165,21 @@ class AuthorizationProfile { cy.contains(issuerURL).should('exist') cy.visit(this.path) } + + deleteAuthProfile(authProfileName: string) { + cy.wait(2000) + let authProfileText + cy.get(this.profileTable).find('tr').each(($e1, index, $list) => { + authProfileText = $e1.find('td:nth-child(1)').text(); + if (authProfileText===authProfileName) { + cy.wrap($e1).find('button').eq(1).click() + cy.wait(2000) + cy.wrap($e1).find('button').last().click({force: true}) + cy.verifyToastMessage(authProfileName +' deleted') + return false + } + }) + } } export default AuthorizationProfile diff --git a/e2e/cypress/pageObjects/myAccess.ts b/e2e/cypress/pageObjects/myAccess.ts index 7a200768a..65b5d8bd6 100644 --- a/e2e/cypress/pageObjects/myAccess.ts +++ b/e2e/cypress/pageObjects/myAccess.ts @@ -14,6 +14,7 @@ class myAccessPage { regenerateCredentialCloseBtn: string = '[data-testid=regenerate-credentials-done-button]' collectCredentialsBtn: string = '[data-testid="generate-credentials-button"]' clientIDValueTxt: string = '[data-testid="sa-new-creds-client-id"]' + cancelRequestAccessRequest: string = '[data-testid="access-request-cancel-button"]' path: string = '/devportal/access' @@ -37,6 +38,11 @@ class myAccessPage { cy.get(this.closeRequestAccesss).click() } + cancelRequestAccessPopUp() + { + cy.get(this.cancelRequestAccessRequest).click() + } + saveReGenAPIKeyValue(): void { cy.get(this.apiKyeValueTxt).invoke('val').then(($apiKey: any) => { cy.saveState('newApiKey', $apiKey) diff --git a/e2e/cypress/tests/01-api-key/03-request-access-inactive-env.cy.ts b/e2e/cypress/tests/01-api-key/03-request-access-inactive-env.cy.ts index ddf82c7b4..cf01b89e4 100644 --- a/e2e/cypress/tests/01-api-key/03-request-access-inactive-env.cy.ts +++ b/e2e/cypress/tests/01-api-key/03-request-access-inactive-env.cy.ts @@ -1,143 +1,143 @@ -// import ApiDirectoryPage from '../../pageObjects/apiDirectory' -// import ApplicationPage from '../../pageObjects/applications' -// import HomePage from '../../pageObjects/home' -// import LoginPage from '../../pageObjects/login' -// import NamespaceAccessPage from '../../pageObjects/namespaceAccess' -// import Products from '../../pageObjects/products' -// import MyAccessPage from '../../pageObjects/myAccess' - -// describe('Change an Active environment to Inactive', () => { -// const login = new LoginPage() -// const home = new HomePage() -// const na = new NamespaceAccessPage() -// const pd = new Products() - -// before(() => { -// cy.visit('/') -// cy.deleteAllCookies() -// cy.reload() -// }) - -// beforeEach(() => { -// cy.preserveCookies() -// cy.fixture('apiowner').as('apiowner') -// // cy.visit(login.path) -// }) - -// it('authenticates Janis (api owner)', () => { -// cy.get('@apiowner').then(({ user, namespace }: any) => { -// cy.login(user.credentials.username, user.credentials.password) -// cy.log('Logged in!') -// home.useNamespace(namespace) -// }) -// }) - -// it('Navigate to Products Page', () => { -// cy.visit(pd.path) -// }) - -// it('Change the current active environment to inactive state', () => { -// cy.get('@apiowner').then(({ product }: any) => { -// pd.editProductEnvironment(product.name, product.environment.name) -// pd.editProductEnvironmentConfig(product.environment.config, true) -// }) -// }) - -// after(() => { -// cy.logout() -// cy.clearLocalStorage({ log: true }) -// cy.deleteAllCookies() -// }) -// }) - -// describe('Verify enactive environment in rrequest access pop up', () => { -// const apiDir = new ApiDirectoryPage() -// const app = new ApplicationPage() -// const myAccessPage = new MyAccessPage() - -// before(() => { -// cy.visit('/') -// cy.deleteAllCookies() -// cy.reload() -// }) - -// beforeEach(() => { -// cy.preserveCookies() -// cy.fixture('developer').as('developer') -// // cy.visit(login.path) -// }) - -// it('authenticates Harley (developer)', () => { -// cy.get('@developer').then(({ user }: any) => { -// cy.login(user.credentials.username, user.credentials.password) -// }) -// }) - -// it('creates an application', () => { -// cy.visit(app.path) -// cy.get('@developer').then(({ application }: any) => { -// app.createApplication(application) -// }) -// }) - -// it('Verify that inactive environment is not displayed', () => { -// cy.visit(apiDir.path) -// cy.get('@developer').then(({ product, application }: any) => { -// apiDir.checkInactiveEnvironmentAccessReqOption(product, application) -// }) -// }) - -// it('Close the popup by click on Cancel button', () => { -// myAccessPage.cancelRequestAccessPopUp() -// }) - -// after(() => { -// cy.logout() -// cy.clearLocalStorage({ log: true }) -// cy.deleteAllCookies() -// }) -// }) - -// describe('Change an the environment back to active', () => { -// const login = new LoginPage() -// const home = new HomePage() -// const na = new NamespaceAccessPage() -// const pd = new Products() - -// before(() => { -// cy.visit('/') -// cy.deleteAllCookies() -// cy.reload() -// }) - -// beforeEach(() => { -// cy.preserveCookies() -// cy.fixture('apiowner').as('apiowner') -// // cy.visit(login.path) -// }) - -// it('authenticates Janis (api owner)', () => { -// cy.get('@apiowner').then(({ user, namespace }: any) => { -// cy.login(user.credentials.username, user.credentials.password) -// cy.log('Logged in!') -// home.useNamespace(namespace) -// }) -// }) - -// it('Navigate to Products Page', () => { -// cy.visit(pd.path) -// }) - -// it('Change the environment back to active state', () => { -// cy.get('@apiowner').then(({ product }: any) => { -// pd.editProductEnvironment(product.name, product.environment.name) -// pd.editProductEnvironmentConfig(product.environment.config) -// }) -// }) - -// after(() => { -// cy.logout() -// cy.clearLocalStorage({ log: true }) -// cy.deleteAllCookies() -// }) -// }) \ No newline at end of file +import ApiDirectoryPage from '../../pageObjects/apiDirectory' +import ApplicationPage from '../../pageObjects/applications' +import HomePage from '../../pageObjects/home' +import LoginPage from '../../pageObjects/login' +import NamespaceAccessPage from '../../pageObjects/namespaceAccess' +import Products from '../../pageObjects/products' +import MyAccessPage from '../../pageObjects/myAccess' + +describe('Change an Active environment to Inactive', () => { + const login = new LoginPage() + const home = new HomePage() + const na = new NamespaceAccessPage() + const pd = new Products() + + before(() => { + cy.visit('/') + cy.deleteAllCookies() + cy.reload() + }) + + beforeEach(() => { + cy.preserveCookies() + cy.fixture('apiowner').as('apiowner') + // cy.visit(login.path) + }) + + it('authenticates Janis (api owner)', () => { + cy.get('@apiowner').then(({ user, namespace }: any) => { + cy.login(user.credentials.username, user.credentials.password) + cy.log('Logged in!') + home.useNamespace(namespace) + }) + }) + + it('Navigate to Products Page', () => { + cy.visit(pd.path) + }) + + it('Change the current active environment to inactive state', () => { + cy.get('@apiowner').then(({ product }: any) => { + pd.editProductEnvironment(product.name, product.environment.name) + pd.editProductEnvironmentConfig(product.environment.config, true) + }) + }) + + after(() => { + cy.logout() + cy.clearLocalStorage({ log: true }) + cy.deleteAllCookies() + }) +}) + +describe('Verify enactive environment in rrequest access pop up', () => { + const apiDir = new ApiDirectoryPage() + const app = new ApplicationPage() + const myAccessPage = new MyAccessPage() + + before(() => { + cy.visit('/') + cy.deleteAllCookies() + cy.reload() + }) + + beforeEach(() => { + cy.preserveCookies() + cy.fixture('developer').as('developer') + // cy.visit(login.path) + }) + + it('authenticates Harley (developer)', () => { + cy.get('@developer').then(({ user }: any) => { + cy.login(user.credentials.username, user.credentials.password) + }) + }) + + it('creates an application', () => { + cy.visit(app.path) + cy.get('@developer').then(({ application }: any) => { + app.createApplication(application) + }) + }) + + it('Verify that inactive environment is not displayed', () => { + cy.visit(apiDir.path) + cy.get('@developer').then(({ product, application }: any) => { + apiDir.checkInactiveEnvironmentAccessReqOption(product, application) + }) + }) + + it('Close the popup by click on Cancel button', () => { + myAccessPage.cancelRequestAccessPopUp() + }) + + after(() => { + cy.logout() + cy.clearLocalStorage({ log: true }) + cy.deleteAllCookies() + }) +}) + +describe('Change an the environment back to active', () => { + const login = new LoginPage() + const home = new HomePage() + const na = new NamespaceAccessPage() + const pd = new Products() + + before(() => { + cy.visit('/') + cy.deleteAllCookies() + cy.reload() + }) + + beforeEach(() => { + cy.preserveCookies() + cy.fixture('apiowner').as('apiowner') + // cy.visit(login.path) + }) + + it('authenticates Janis (api owner)', () => { + cy.get('@apiowner').then(({ user, namespace }: any) => { + cy.login(user.credentials.username, user.credentials.password) + cy.log('Logged in!') + home.useNamespace(namespace) + }) + }) + + it('Navigate to Products Page', () => { + cy.visit(pd.path) + }) + + it('Change the environment back to active state', () => { + cy.get('@apiowner').then(({ product }: any) => { + pd.editProductEnvironment(product.name, product.environment.name) + pd.editProductEnvironmentConfig(product.environment.config) + }) + }) + + after(() => { + cy.logout() + cy.clearLocalStorage({ log: true }) + cy.deleteAllCookies() + }) +}) \ No newline at end of file diff --git a/e2e/cypress/tests/01-api-key/03-request-access-with-out-collecting-credentials.cy.ts b/e2e/cypress/tests/01-api-key/04-request-access-with-out-collecting-credentials.cy.ts similarity index 100% rename from e2e/cypress/tests/01-api-key/03-request-access-with-out-collecting-credentials.cy.ts rename to e2e/cypress/tests/01-api-key/04-request-access-with-out-collecting-credentials.cy.ts diff --git a/e2e/cypress/tests/01-api-key/04-review-request-without-collecting-credentials.cy.ts b/e2e/cypress/tests/01-api-key/05-review-request-without-collecting-credentials.cy.ts similarity index 100% rename from e2e/cypress/tests/01-api-key/04-review-request-without-collecting-credentials.cy.ts rename to e2e/cypress/tests/01-api-key/05-review-request-without-collecting-credentials.cy.ts diff --git a/e2e/cypress/tests/01-api-key/05-collect-credentials.cy.ts b/e2e/cypress/tests/01-api-key/06-collect-credentials.cy.ts similarity index 100% rename from e2e/cypress/tests/01-api-key/05-collect-credentials.cy.ts rename to e2e/cypress/tests/01-api-key/06-collect-credentials.cy.ts diff --git a/e2e/cypress/tests/01-api-key/06-approve-pending-rqst.cy.ts b/e2e/cypress/tests/01-api-key/07-approve-pending-rqst.cy.ts similarity index 100% rename from e2e/cypress/tests/01-api-key/06-approve-pending-rqst.cy.ts rename to e2e/cypress/tests/01-api-key/07-approve-pending-rqst.cy.ts diff --git a/e2e/cypress/tests/01-api-key/07-grant-access.cy.ts b/e2e/cypress/tests/01-api-key/08-grant-access.cy.ts similarity index 100% rename from e2e/cypress/tests/01-api-key/07-grant-access.cy.ts rename to e2e/cypress/tests/01-api-key/08-grant-access.cy.ts diff --git a/e2e/cypress/tests/01-api-key/08-gwa-get.ts b/e2e/cypress/tests/01-api-key/09-gwa-get.ts similarity index 98% rename from e2e/cypress/tests/01-api-key/08-gwa-get.ts rename to e2e/cypress/tests/01-api-key/09-gwa-get.ts index f39e1f99a..24fcab411 100644 --- a/e2e/cypress/tests/01-api-key/08-gwa-get.ts +++ b/e2e/cypress/tests/01-api-key/09-gwa-get.ts @@ -42,6 +42,7 @@ describe('Verify GWA get commands', () => { it('Verify "gwa get" for dataset', () => { cy.get('@apiowner').then(({ product }: any) => { cy.executeCliCommand('gwa get datasets').then((response) => { + debugger expect(response.stdout).not.to.contain(product); }) }) @@ -70,6 +71,7 @@ describe('Verify GWA get commands', () => { it('Verify "gwa get" for products', () => { cy.get('@apiowner').then(({ product }: any) => { cy.executeCliCommand('gwa get products').then((response) => { + debugger expect(response.stdout).not.to.contain(product); }) }) diff --git a/e2e/cypress/tests/15-aps-api/05-authorizationProfiles.cy.ts b/e2e/cypress/tests/15-aps-api/05-authorizationProfiles.cy.ts index 34f0c0ada..b473e239c 100644 --- a/e2e/cypress/tests/15-aps-api/05-authorizationProfiles.cy.ts +++ b/e2e/cypress/tests/15-aps-api/05-authorizationProfiles.cy.ts @@ -1,4 +1,6 @@ +import AuthorizationProfile from "../../pageObjects/authProfile" import HomePage from "../../pageObjects/home" +import login from "../../pageObjects/login" import LoginPage from "../../pageObjects/login" let userSession: any let testData = require("../../fixtures/test_data/authorizationProfile.json") @@ -201,4 +203,96 @@ describe('Verify GWA command to publish issuer and apply generated config', () = }) }) + after(() => { + cy.logout() + cy.clearLocalStorage({ log: true }) + cy.deleteAllCookies() + }) + +}) + +describe('Deleted shared auth profile', () => { + + const login = new LoginPage() + const home = new HomePage() + const authProfile = new AuthorizationProfile() + + before(() => { + cy.visit('/') + cy.deleteAllCookies() + cy.reload() + }) + + beforeEach(() => { + cy.preserveCookies() + cy.fixture('apiowner').as('apiowner') + cy.fixture('api').as('api') + }) + + it('Authenticates Janis (api owner) to get the user session token', () => { + cy.get('@apiowner').then(({ apiTest }: any) => { + cy.getUserSessionTokenValue(apiTest.namespace).then((value) => { + userSession = value + namespace = apiTest.namespace + home.useNamespace(namespace); + }) + }) + }) + + it('Navigate to authorization profile page', () => { + cy.visit(authProfile.path) + }) + + it('Delete the authorizarion profile inherited from shared IDP', () => { + cy.get('@api').then(({ authorizationProfiles }: any) => { + authProfile.deleteAuthProfile(authorizationProfiles.shared_IDP_inheritFrom_expectedResponse.name) + }) + }) + + after(() => { + cy.logout() + cy.clearLocalStorage({ log: true }) + cy.deleteAllCookies() + }) +}) + +describe('Verify that client ID of deleted shared auth profile in IDP', () => { + + var nameSpace: string + const home = new HomePage() + const authProfile = new AuthorizationProfile() + + before(() => { + cy.visit(Cypress.env('KEYCLOAK_URL')) + cy.deleteAllCookies() + cy.reload() + }) + + beforeEach(() => { + cy.preserveCookies() + cy.fixture('developer').as('developer') + cy.fixture('apiowner').as('apiowner') + cy.fixture('state/regen').as('regen') + cy.fixture('admin').as('admin') + cy.fixture('api').as('api') + }) + + it('Authenticates Admin owner', () => { + cy.get('@admin').then(({ user }: any) => { + cy.contains('Administration Console').click({ force: true }) + cy.keycloakLogin(user.credentials.username, user.credentials.password) + }) + }) + + it('Navigate to Clients', () => { + cy.contains('Clients').click() + }) + + it('Verify that the client id of deleted shared auth profile does not display', () => { + cy.get('@api').then(({ authorizationProfiles }: any) => { + debugger + cy.contains(authorizationProfiles.shared_IDP_inheritFrom_expectedResponse.name).should('not.exist') + }) + }) + }) \ No newline at end of file diff --git a/e2e/cypress/tests/16-CORS/01-create-api.cy.ts b/e2e/cypress/tests/16-CORS/01-create-api.cy.ts deleted file mode 100644 index e7a84a363..000000000 --- a/e2e/cypress/tests/16-CORS/01-create-api.cy.ts +++ /dev/null @@ -1,126 +0,0 @@ -import WebAppPage from '../../pageObjects/webApp' - -describe('Create API Spec', () => { - const webApp = new WebAppPage() - let updatedBody: any - let pluginID: string - let serviceID: string - before(() => { - cy.visit(Cypress.env('WEBAPP_URL')) - // cy.visit(Cypress.env('WEBAPP_URL')) - cy.deleteAllCookies() - cy.reload() - }) - - beforeEach(() => { - cy.fixture('apiowner').as('apiowner') - cy.fixture('cors/kong-cors-plugin-config.json').as('kong-cors-plugin-config') - cy.preserveCookies() - }) - serviceID = 'ce5d3e76-1d35-47f0-8ddf-fad087b1f969' - pluginID = '73a51e86-23ec-43c2-97fc-b96ed9f5bd90' - - // it('Create a route for the service in Kong', () => { - // cy.readFile('cypress/fixtures/state/store.json').then((store_cred) => { - // serviceID = store_cred.servicesid - // cy.get('@kong-cors-plugin-config').then(({ createRoute }: any) => { - // cy.updateJsonValue(JSON.stringify(createRoute), '$.service.id', serviceID).then((updatedValue) => { - // cy.updateKongPluginForJSONRequest(updatedValue, 'routes').then((response) => { - // expect(response.status).to.be.equal(201) - // expect(response.statusText).to.be.equal('Created') - // }) - // }) - // }) - // }) - // }) - - // it('Publish CORS plugin to kong with a valid origins value', () => { - // cy.get('@kong-cors-plugin-config').then(({ uploadCORSPlugin }: any) => { - // debugger - // cy.updateKongPluginForJSONRequest(uploadCORSPlugin, 'services/'+serviceID+'/plugins').then((response) => { - // debugger - // expect(response.status).to.be.equal(201) - // expect(response.statusText).to.be.equal('Created') - // pluginID=response.body.id - // }) - // }) - // }) - - // it('Verify for successful CORS call for valid origin value', () => { - // webApp.getStatusAfterClickOnCORS().then((statusText)=>{ - // expect(statusText).to.be.equal('Response Code: 200') - // }) - // }) - - it('Set incorrrect origin name in CORS plugin', () => { - cy.get('@kong-cors-plugin-config').then(({ uploadCORSPlugin }: any) => { - debugger - cy.updateJsonValue(JSON.stringify(uploadCORSPlugin), '$.config.origins[0]', 'https://google.com').then((updatedValue) => { - updatedBody = updatedValue - cy.updateKongPluginForJSONRequest(updatedBody, 'services/' + serviceID + '/plugins/' + pluginID, 'PUT').then((response) => { - debugger - expect(response.status).to.be.equal(200) - }) - }) - }) - }) - - it('Verify for successful CORS call for valid origin value', () => { - // cy.origin(Cypress.env('WEBAPP_URL'), () => { - // cy.wait(5000) - // cy.get('[id="corsButton"]').click({ force: true }) - // cy.wait(8000) - // cy.visit('/') - - webApp.getStatusAfterClickOnCORS().then((statusText) => { - expect(statusText).to.be.equal('Error: Failed to fetch') - }) - }) - - - // it('Allow all origin name in CORS plugin', () => { - // cy.get('@kong-cors-plugin-config').then(({ uploadCORSPlugin }: any) => { - // debugger - // cy.updateJsonValue(JSON.stringify(uploadCORSPlugin), '$.config.origins[0]', '*').then((updatedValue) => { - // updatedBody = updatedValue - // cy.updateKongPluginForJSONRequest(updatedBody, 'services/'+serviceID+'/plugins/'+pluginID, 'PUT').then((response) => { - // debugger - // expect(response.status).to.be.equal(200) - // }) - // }) - // }) - // }) - - // it('Verify for successful CORS call for valid origin value', () => { - // webApp.getStatusAfterClickOnCORS().then((statusText)=>{ - // expect(statusText).to.be.equal('Response Code: 200') - // }) - // }) - - // it('Verify for successful CORS call for invalid header', () => { - // webApp.getStatusAfterClickOnCORSForHeaders().then((statusText)=>{ - // expect(statusText).to.be.equal('Error: Failed to fetch') - // }) - // }) - - // it('Set the header name as Access-Control-Allow-Headers in CORS plugin', () => { - // cy.get('@kong-cors-plugin-config').then(({ uploadCORSPlugin }: any) => { - // debugger - // cy.updateJsonValue(JSON.stringify(uploadCORSPlugin), '$.config.headers[4]', 'X-PINGOTHER').then((updatedValue) => { - // updatedBody = updatedValue - // cy.updateKongPluginForJSONRequest(updatedBody, 'services/'+serviceID+'/plugins/'+pluginID, 'PUT').then((response) => { - // debugger - // expect(response.status).to.be.equal(200) - // }) - // }) - // }) - // }) - - // it('Verify for successful CORS call after setting the header in Access-Control-Allow-Headers list', () => { - // webApp.getStatusAfterClickOnCORSForHeaders().then((statusText)=>{ - // expect(statusText).to.be.equal('Response Code: 200') - // }) - // }) - -}) - diff --git a/e2e/cypress/tests/17-gwa-cli/01-cli-commands.ts b/e2e/cypress/tests/16-gwa-cli/01-cli-commands.ts similarity index 100% rename from e2e/cypress/tests/17-gwa-cli/01-cli-commands.ts rename to e2e/cypress/tests/16-gwa-cli/01-cli-commands.ts diff --git a/e2e/cypress/tests/17-gwa-cli/02-cli-generate-config.ts b/e2e/cypress/tests/16-gwa-cli/02-cli-generate-config.ts similarity index 96% rename from e2e/cypress/tests/17-gwa-cli/02-cli-generate-config.ts rename to e2e/cypress/tests/16-gwa-cli/02-cli-generate-config.ts index 30d11a689..bb346b5cd 100644 --- a/e2e/cypress/tests/17-gwa-cli/02-cli-generate-config.ts +++ b/e2e/cypress/tests/16-gwa-cli/02-cli-generate-config.ts @@ -88,4 +88,11 @@ describe('Verify CLI commands for generate/apply config', () => { cy.visit(pd.path) pd.verifyDataset('my-service', 'my-service API') }) + + after(() => { + cy.logout() + cy.clearLocalStorage({ log: true }) + cy.deleteAllCookies() +}) + }) \ No newline at end of file diff --git a/e2e/cypress/tests/18-delete-application/01-delete-application-without-access.cy.ts b/e2e/cypress/tests/17-delete-application/01-delete-application-without-access.cy.ts similarity index 100% rename from e2e/cypress/tests/18-delete-application/01-delete-application-without-access.cy.ts rename to e2e/cypress/tests/17-delete-application/01-delete-application-without-access.cy.ts diff --git a/e2e/cypress/tests/18-delete-application/02-delete-application-with-pending-request.cy.ts b/e2e/cypress/tests/17-delete-application/02-delete-application-with-pending-request.cy.ts similarity index 100% rename from e2e/cypress/tests/18-delete-application/02-delete-application-with-pending-request.cy.ts rename to e2e/cypress/tests/17-delete-application/02-delete-application-with-pending-request.cy.ts diff --git a/e2e/cypress/tests/18-delete-application/03-delete-application-with-approved-request.cy.ts b/e2e/cypress/tests/17-delete-application/03-delete-application-with-approved-request.cy.ts similarity index 100% rename from e2e/cypress/tests/18-delete-application/03-delete-application-with-approved-request.cy.ts rename to e2e/cypress/tests/17-delete-application/03-delete-application-with-approved-request.cy.ts diff --git a/e2e/cypress/tests/18-delete-application/04-delete-namespace-gwa.ts b/e2e/cypress/tests/17-delete-application/04-delete-namespace-gwa.ts similarity index 100% rename from e2e/cypress/tests/18-delete-application/04-delete-namespace-gwa.ts rename to e2e/cypress/tests/17-delete-application/04-delete-namespace-gwa.ts